PythonPodcast 41 - itnett/FTD02H-N GitHub Wiki
Python Mentorkurs – Episode 6: API-er og Kommunikasjon med Eksterne Tjenester
Mentor: "Velkommen tilbake! I forrige episode lærte vi om filbehandling og avanserte datastrukturer som ordbøker og sett. I dag skal vi ta et steg videre og lære om API-er, eller 'Application Programming Interfaces'. API-er lar programmer kommunisere med hverandre. Med API-er kan du hente data fra en ekstern kilde, som en nettside eller en database, og bruke den i programmet ditt. Klar for å lære om API-er? La oss sette i gang!"
Hva er et API?
Mentor: "Et API er som en dør inn til et annet program eller en tjeneste. Tenk på det som en meny på en restaurant – API-et forteller deg hva tjenesten tilbyr, og hvordan du kan be om det. For eksempel kan du bruke et API for å hente værdata, aksjepriser, eller informasjon fra sosiale medier."
Hvordan Fungerer API-er i Python?
Mentor: "For å kommunisere med et API i Python, bruker vi ofte requests-biblioteket. Dette biblioteket lar oss sende forespørsler til API-er og hente data i retur. La oss se på et enkelt eksempel der vi henter data fra et offentlig API."
import requests
response = requests.get("https://jsonplaceholder.typicode.com/posts") data = response.json() # Konverterer svaret til et JSON-objekt print(data[0]) # Skriver ut den første posten
Mentor: "Her har vi sendt en GET-forespørsel til et API som gir oss en liste over 'posts' (innlegg). Vi konverterer svaret til et JSON-objekt og skriver ut den første posten. JSON er et populært format for å sende data mellom programmer."
Bruke API-er med Parametere
Mentor: "Ofte trenger vi å sende parametere med forespørselen vår for å spesifisere hva vi vil ha fra API-et. For eksempel, la oss si at vi bare vil hente innlegg nummer 1. Slik gjør vi det med parametere:"
params = {"id": 1} response = requests.get("https://jsonplaceholder.typicode.com/posts", params=params) data = response.json() print(data)
Mentor: "Her har vi lagt til en parameter id som spesifiserer at vi bare vil ha posten med ID 1. API-er lar deg ofte filtrere data på denne måten."
Autentisering og API-nøkler
Mentor: "Noen API-er krever at du logger inn eller sender med en API-nøkkel for å få tilgang til dataene. Dette sikrer at bare autoriserte brukere kan bruke API-et. For eksempel kan vi ha et API som krever at du sender med en API-nøkkel i forespørselen din."
headers = {"Authorization": "Bearer din-api-nokkel"} response = requests.get("https://api.example.com/data", headers=headers) data = response.json() print(data)
Mentor: "Her har vi sendt med en API-nøkkel som en del av forespørselen i headers. Mange API-er bruker denne metoden for å beskytte dataene sine."
Håndtering av Feil ved API-forespørsler
Mentor: "Det er viktig å håndtere feil når du jobber med API-er. Noen ganger kan det hende at API-et ikke svarer, eller at forespørselen din ikke lykkes. Ved å sjekke HTTP-statuskoder kan vi finne ut om noe gikk galt."
response = requests.get("https://jsonplaceholder.typicode.com/posts")
if response.status_code == 200: data = response.json() print("Forespørsel var vellykket.") else: print(f"Feil: {response.status_code}")
Mentor: "Hvis forespørselen var vellykket, vil statuskoden være 200. Hvis noe gikk galt, vil vi få en annen statuskode, for eksempel 404 (ikke funnet) eller 500 (serverfeil)."
Avansert: POST-forespørsler
Mentor: "I tillegg til GET-forespørsler (hente data), kan vi også sende data til et API ved hjelp av en POST-forespørsel. Dette er nyttig når du vil sende informasjon, som å lage en ny ressurs i en database."
ny_post = {"title": "Min første post", "body": "Dette er innholdet.", "userId": 1} response = requests.post("https://jsonplaceholder.typicode.com/posts", json=ny_post)
if response.status_code == 201: print("Ny post ble opprettet!")
Mentor: "Her har vi sendt en ny post til API-et ved å bruke en POST-forespørsel. Dataene sendes som et JSON-objekt, og hvis forespørselen er vellykket, får vi statuskoden 201 som indikerer at en ny ressurs ble opprettet."
API-Rate Limiting
Mentor: "Noen API-er har grenser for hvor mange forespørsler du kan sende på en gitt tid. Dette kalles 'rate limiting'. Hvis du sender for mange forespørsler på kort tid, kan API-et blokkere deg midlertidig. Derfor er det viktig å kjenne til slike grenser når du bruker et API."
Bruke Tredjepartsbiblioteker for API-er
Mentor: "Mange populære API-er har ferdige Python-biblioteker som gjør det enklere å bruke API-et uten å måtte håndtere HTTP-forespørsler direkte. For eksempel har Twitter, Google, og andre tjenester sine egne Python-biblioteker."
import tweepy
Eksempel på hvordan du bruker Tweepy's API for Twitter
auth = tweepy.OAuthHandler("consumer_key", "consumer_secret") auth.set_access_token("access_token", "access_token_secret")
api = tweepy.API(auth) tweets = api.home_timeline() for tweet in tweets: print(tweet.text)
Mentor: "Her bruker vi Tweepy, et bibliotek for å jobbe med Twitter API, for å hente tidslinjeinnlegg. Når du jobber med API-er, kan slike tredjepartsbiblioteker gjøre jobben mye enklere."
Oppsummering
Mentor: "I denne episoden har vi lært hva API-er er, og hvordan vi kan bruke dem til å hente og sende data i Python. Vi har sett på GET- og POST-forespørsler, parametere, autentisering med API-nøkler, og håndtering av feil. API-er er utrolig kraftige verktøy for å koble Python-programmet ditt til eksterne tjenester og data."
Praktisk Oppgave: Bruk Et Offentlig API
Mentor: "Her er en oppgave for deg: Bruk et offentlig API, som vær-API-et fra OpenWeatherMap, for å hente værdata for en spesifikk by. Vis værmeldingen på skjermen, og håndter eventuelle feil som kan oppstå, som feil bynavn eller ingen internettilkobling."
Mentor: "I neste episode skal vi dykke ned i sikkerhet i Python-programmering. Vi vil snakke om hvordan du kan beskytte dataene dine, unngå sikkerhetshull, og sikre at applikasjonene dine kjører trygt. Øv på API-arbeid til neste gang, så sees vi snart!"
Denne episoden introduserer deltageren for API-er og deres rolle i å koble Python-programmer til eksterne tjenester. Gjennom eksempler og praktiske oppgaver får deltageren erfaring med å sende og motta data via API-er, samt forstå viktige konsepter som autentisering og feilhåndtering.