Introduksjon til API-er og deres rolle i moderne systemer.
Når du brukar ein værapp på mobilen, spelar musikk på Spotify, eller deler ein Instagram-post, kommuniserer appen med servarar på internett for å hente og sende data. Dette skjer gjennom noko som blir kalla eit API (Application Programming Interface).
Eit API er i praksis eit grensesnitt som lèt to program snakke saman. I staden for at menneske klikkar på knappar i eit brukargrensesnitt, sender program førespurnader til kvarandre og utvekslar data automatisk.
I dette kapittelet skal vi sjå på kva eit API er, korleis REST API-ar fungerer, og korleis data typisk blir utveksla i JSON-format.
Eit API er eit sett av reglar og protokollar som lèt ulike program kommunisere med kvarandre. Eit API definerer korleis førespurnader skal sendast, kva data som kan utvekslast, og kva format som blir brukt.
REST API (Representational State Transfer) er ein arkitekturstil for API-ar som brukar HTTP-protokollen og standard metodar som GET, POST, PUT og DELETE.
Lat oss bruke ein restaurant-analogi:
Restaurant = Server med API
- Menyen = API-dokumentasjonen (liste over kva du kan bestille)
- Servitøren = API-et (tek imot bestillinga og leverer maten)
- Kjøkkenet = Server/database (lagar maten/dataene)
- Du = Klientprogrammet (bestiller mat/data)
Du vel noko frå menyen, fortel servitøren kva du vil ha, servitøren går til kjøkkenet, og kjem tilbake med maten. Du treng ikkje vite korleis kjøkkenet lagar maten, berre kva du kan bestille og korleis du bestiller det.
På same måte sender eit program ein førespurnad til eit API, API-et hentar data frå databasen, og sender tilbake eit svar med dataene.
REST API-ar brukar HTTP-metodar for å utføre ulike operasjonar:
- GET: Hente data (lese)
- POST: Sende ny data (opprette)
- PUT: Oppdatere eksisterande data
- DELETE: Slette data
Desse blir også kalla CRUD-operasjonar: Create, Read, Update, Delete.
Lat oss sjå på eit eksempel med eit værmeldings-API:
Endepunkt: https://api.weatherapi.com/v1/current.json
Førespurnad:
GET https://api.weatherapi.com/v1/current.json?key=ABC123&q=OsloHer er:
- GET = HTTP-metoden (vi vil hente data)
- https://api.weatherapi.com/v1/current.json = endepunktet
- ?key=ABC123&q=Oslo = parametrar (API-nøkkel og stad)
Svar (JSON):
{
"location": {
"name": "Oslo",
"country": "Norway"
},
"current": {
"temp_c": 12.5,
"condition": {
"text": "Partly cloudy"
}
}
}Programmet ditt kan no bruke desse dataene til å vise været i appen.
Eit API består av fleire endepunkt (endpoints), som er spesifikke URL-ar som utfører ulike funksjonar.
Eksempel frå eit sosiale medium-API:
- GET /users/123 – Hent brukar med ID 123
- GET /users/123/posts – Hent alle postar frå brukar 123
- POST /posts – Opprett ny post
- PUT /posts/456 – Oppdater post med ID 456
- DELETE /posts/456 – Slett post med ID 456
Kvart endepunkt har:
- Ein URL (adressa)
- Ein HTTP-metode (GET, POST, osv.)
- Parametrar (valfri data som blir sendt med)
- Eit svar (data som blir returnert)
Struktur:
- Data blir organisert i nøkkel-verdi-par: "navn": "verdi"
- Objekt blir skrivne med krøllparentesar: { }
- Lister blir skrivne med hakeparentesar: [ ]
- Støttar strings, tal, boolske verdiar, null, objekt og lister
Her er eit eksempel på JSON-data frå eit API:
{
"student": {
"navn": "Emma Hansen",
"alder": 18,
"aktiv": true,
"karakterer": [5, 4, 6, 5],
"kontakt": {
"epost": "emma@example.com",
"telefon": "12345678"
}
}
}Forklaring:
- "navn" er ein string
- "alder" er eit tal
- "aktiv" er ein boolsk verdi
- "karakterer" er ei liste med tal
- "kontakt" er eit nesta objekt
Dette formatet er enkelt å parse (tolke) i Python med json-modulen.
Alle gode API-ar har dokumentasjon som forklarar:
- Kva endepunkt som finst
- Kva HTTP-metodar som blir støtta
- Kva parametrar som krevst
- Kva format svaret har
- Eksempel på bruk
- Autentisering (om naudsynt)
Eksempel på dokumentasjon:
Endepunkt: GET /books/{id}
Beskrivelse: Hent informasjon om en bok
Parametre:
- id (required): Bokens ID-nummer
Svar (200 OK):
{
"id": 123,
"title": "1984",
"author": "George Orwell",
"year": 1949
}
Feilkoder:
- 404: Bok ikke funnet
- 500: ServerfeilFør du brukar eit API, bør du alltid lese dokumentasjonen nøye.
Mange API-ar krev autentisering for å sikre at berre autoriserte brukarar får tilgang. Den vanlegaste metoden er å bruke ein API-nøkkel.
Kvifor API-nøklar?
- Hindre misbruk (for mange førespurnader)
- Spore kven som brukar API-et
- Avgrense tilgang til betalte funksjonar
- Tryggleik (hindre uautorisert tilgang)
Bruk av API-nøkkel:
API-nøkkelen blir vanlegvis sendt som ein parameter eller i HTTP-headeren:
GET https://api.example.com/data?api_key=DIN_HEMMELIGE_NØKKELeller
GET https://api.example.com/data
Headers: {
"Authorization": "Bearer DIN_HEMMELIGE_NØKKEL"
}Viktig: Handsam API-nøklar som passord – del dei aldri offentleg!
Her er nokre populære API-ar du kan eksperimentere med:
1. JSONPlaceholder (gratis test-API):
- URL: https://jsonplaceholder.typicode.com
- Endepunkt: /posts, /users, /comments
- Krev ingen API-nøkkel
- Perfekt for øving
2. Open-Meteo (værmeldingar):
- URL: https://api.open-meteo.com
- Gratis og ingen API-nøkkel naudsynt
- Værdata for heile verda
3. REST Countries:
- URL: https://restcountries.com/v3.1
- Informasjon om alle land
- Gratis utan API-nøkkel
4. The Dog API:
- URL: https://dog.ceo/api
- Tilfeldige hundebilete
- Gratis og morosamt
Desse er gode å starte med når du lærer API-programmering!
Oppsummering
I dette kapittelet har du lært:
- API: reglar og protokollar som lèt program kommunisere.
- HTTP-metodar: GET, POST, PUT og DELETE.
- REST: arkitekturstil for web-API-ar.
- JSON: tekstbasert dataformat for datautveksling.
- Praktisk bruk: hente data frå ulike API-ar.
Noekkelbegreper
| Begrep | Forklaring |
|---|---|
| API | Grensesnitt for kommunikasjon mellom program |
| REST | Arkitekturstil for web-API-ar |
| JSON | Tekstbasert dataformat |
Oppgaver
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.