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 requests fö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

  1. Hitta ett öppet API som du kan använda utan registrering.
  2. Skriv kod som hämtar data från API:et.
  3. Skriv ut den information som du tycker är mest intressant.
  4. 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 requests fö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.

Tillbaka till Kapitel 5