Aplicație meteo simplă pentru începători
Învață cum funcționează un API și construiește în Python o aplicație care îți spune vremea într-un oraș, folosind biblioteca requests. Cod complet și explicat.
De unde știe telefonul tău ce vreme e afară? Întreabă un API — un serviciu de pe internet care răspunde cu date. Hai să construim și noi o aplicație Python care întreabă un API de vreme și ne spune temperatura dintr-un oraș. E primul tău pas spre programe care „vorbesc" cu internetul.
Ce este un API?
Un API (Application Programming Interface) e ca un chelner: tu îi spui ce vrei (vremea în Cluj), el merge la „bucătărie" (serverul) și îți aduce răspunsul, de obicei în format JSON — un text structurat ușor de citit de programe.
Pentru a vorbi cu un API din Python folosim biblioteca requests. O instalezi o singură dată:
# în terminal:
# pip install requests
import requests
Cum arată o cerere
Multe API-uri de vreme (de exemplu OpenWeatherMap sau Open-Meteo) funcționează la fel: trimiți o adresă cu niște parametri, primești JSON. Iată structura generală.
import requests
url = "https://api.exemplu-meteo.ro/vreme"
parametri = {
"oras": "Cluj-Napoca",
"unitate": "celsius",
}
raspuns = requests.get(url, params=parametri)
date = raspuns.json()
requests.get trimite cererea, iar .json() transformă răspunsul într-un dicționar Python cu care putem lucra ușor.
Citim datele din răspuns
Răspunsul JSON e un dicționar. Presupunem că arată cam așa:
date = {
"oras": "Cluj-Napoca",
"temperatura": 21,
"descriere": "parțial înnorat",
"vant_kmh": 12,
}
print(f"Vremea în {date['oras']}:")
print(f" Temperatură: {date['temperatura']}°C")
print(f" Cer: {date['descriere']}")
print(f" Vânt: {date['vant_kmh']} km/h")
Accesăm fiecare valoare cu cheia ei: date['temperatura'] ne dă numărul 21. Aceasta e logica oricărei aplicații care folosește un API.
Punem totul într-o funcție
E mai curat să împachetăm logica într-o funcție care primește orașul și întoarce vremea.
import requests
def vremea(oras):
url = "https://api.exemplu-meteo.ro/vreme"
raspuns = requests.get(url, params={"oras": oras})
if raspuns.status_code != 200:
return None
return raspuns.json()
date = vremea("Iași")
if date:
print(f"{date['oras']}: {date['temperatura']}°C")
else:
print("Nu am găsit vremea pentru orașul cerut.")
status_code ne spune dacă cererea a reușit. Codul 200 înseamnă „OK"; altceva (de exemplu 404) înseamnă că ceva n-a mers — poate orașul e scris greșit.
Important: API-urile reale cer de obicei o cheie (API key) personală, gratuită la înregistrare. Nu o pune niciodată public pe GitHub — o ții într-o variabilă de mediu sau într-un fișier separat.
Erori frecvente și cum le eviți
| Problemă | Cauză | Soluție |
|---|---|---|
ModuleNotFoundError | requests neinstalat | pip install requests |
| Cod 401 | cheie API lipsă/greșită | verifică cheia |
KeyError | cheie inexistentă în JSON | afișează date și verifică structura |
Un truc util când nu știi cum arată răspunsul: pur și simplu print(date) ca să vezi toate cheile disponibile.
Vremea pentru mai multe orașe
Aceeași funcție poate fi chemată într-o buclă, ca să compari mai multe orașe deodată.
orase = ["Cluj-Napoca", "București", "Constanța"]
for oras in orase:
date = vremea(oras)
if date:
print(f"{date['oras']}: {date['temperatura']}°C")
else:
print(f"{oras}: indisponibil")
Frumusețea funcțiilor e exact asta: scrii logica o singură dată și o refolosești de câte ori vrei, fără să copiezi cod.
Un sfat despre vreme și haine
Putem adăuga și un strop de logică „inteligentă" — un mesaj în funcție de temperatură.
def recomandare(temperatura):
if temperatura < 5:
return "Îmbracă-te gros, e frig!"
elif temperatura < 18:
return "O geacă subțire e perfectă."
else:
return "Vreme bună, lasă geaca acasă."
print(recomandare(21)) # Vreme bună, lasă geaca acasă.
elif (prescurtare de la „else if") verifică o a doua condiție doar dacă prima a fost falsă. Așa construiești o scară de decizii curată, fără if-uri imbricate.
Idei de extindere
- Citește orașul de la utilizator cu
input. - Afișează vremea pentru mai multe orașe într-o buclă.
- Salvează temperaturile într-un fișier ca să faci un mic istoric.
- Adaugă un mesaj cu emoji în funcție de cer (soare, ploaie, nori).
Concluzie
Ai învățat cea mai importantă abilitate din programarea modernă: să iei date de pe internet și să le folosești. Aproape orice aplicație serioasă face exact asta — vorbește cu API-uri.
La ByteSchool îți arătăm cum se lucrează cu API-uri reale, pas cu pas, alături de mentori din Big Tech care construiesc zilnic servicii folosite de milioane de oameni.