Programmering nivå 2
Kap 5.3 – Hämta data från API med requests
Anropa externa tjänster och använd JSON-data i dina egna program.
Mål med lektionen
När du har arbetat klart med denna lektion ska du:
- Förstå vad ett API är och hur det används i programmering.
- Kunna använda biblioteket
requestsför att hämta data från ett API. - Kunna läsa, tolka och använda JSON-data från ett API-svar.
- Kunna använda API-data i ett eget program.
Så här lär du dig bäst
Du lär dig bäst genom att först testa ett färdigt exempel som hämtar data från ett öppet API. Börja med att bara skriva ut svaret. Undersök sedan vilken information som finns i datan och hur du kan plocka ut specifika delar. När du förstår det kan du bygga ett eget exempel, till exempel för att skriva ut väder, namn eller skämt. Börja alltid enkelt.
Centrala begrepp
- API - Application Programming Interface, ett gränssnitt för att kommunicera mellan olika program.
- HTTP-förfrågan - En begäran om information som skickas till ett API, till exempel med metoden GET.
- JSON - JavaScript Object Notation, ett textformat som används för att skicka strukturerad data.
- requests - Ett Pythonbibliotek för att skicka HTTP-förfrågningar.
Installera requests
requests ingår normalt inte i Pythons standardbibliotek. Om importen inte fungerar behöver
du installera biblioteket i terminalen:
pip3 install requests
Om du använder flera Python-versioner kan detta behövas i stället:
python3 -m pip install requests
Exempel: Hämta ett skämt från ett API
import requests
url = "https://official-joke-api.appspot.com/random_joke"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
print("Skämt:")
print(data["setup"])
print(data["punchline"])
else:
print("Kunde inte hämta skämt. Statuskod:", response.status_code)
requests.get(url) skickar en GET-förfrågan till API:et. Om statuskoden är
200 betyder det att anropet lyckades. Då kan svaret göras om till Pythondata med
response.json().
Att förstå JSON-data
I exemplet ovan innehåller data en ordlista med nycklar och värden:
{
"id": 74,
"type": "general",
"setup": "Why was the stadium so cool?",
"punchline": "Because it was filled with fans!"
}
Du kan använda data["setup"] för att hämta introduktionen till skämtet och
data["punchline"] för poängen.
Robustare variant med try/except
import requests
def hamta_skamt():
url = "https://official-joke-api.appspot.com/random_joke"
try:
response = requests.get(url)
response.raise_for_status()
data = response.json()
print("\nSkämt:")
print(data["setup"])
print(data["punchline"])
except requests.exceptions.RequestException as e:
print("Kunde inte hämta skämt. Felmeddelande:", e)
if __name__ == "__main__":
hamta_skamt()
raise_for_status() gör att programmet kan fånga HTTP-fel med
try/except. Det är användbart när API:et inte svarar, när nätverket inte fungerar eller
när servern skickar tillbaka en felkod.
Öva - Skriv ett program som använder ett API
- Hitta ett öppet API som du kan använda utan registrering.
- Skriv kod som hämtar data från API:et.
- Skriv ut den information som du tycker är mest intressant.
- Lägg till enkel felhantering med statuskoder och
try/except.
Exempel på öppna API:er
- Skämt:
https://official-joke-api.appspot.com/random_joke - Kattfakta:
https://catfact.ninja/fact - Namn:
https://randomuser.me/api/
Sammanfattning
- Du har lärt dig vad ett API är och hur du använder det i Python.
- Du har testat biblioteket
requestsför att hämta information. - Du har använt JSON-data i ett eget program.
- Du har tränat på att tolka svar från ett externt system och använda det i ditt program.