Introduksjon til API-er og deres rolle i moderne systemer.
Når du bruker en værapp på mobilen, spiller musikk på Spotify, eller deler en Instagram-post, kommuniserer appen med servere på internett for å hente og sende data. Dette skjer gjennom noe som kalles et API (Application Programming Interface).
Et API er i praksis et grensesnitt som lar to programmer snakke sammen. I stedet for at mennesker klikker på knapper i et brukergrensesnitt, sender programmer forespørsler til hverandre og utveksler data automatisk.
I dette kapittelet skal vi se på hva et API er, hvordan REST API-er fungerer, og hvordan data typisk utveksles i JSON-format.
Et API er et sett av regler og protokoller som lar ulike programmer kommunisere med hverandre. Et API definerer hvordan forespørsler skal sendes, hvilke data som kan utveksles, og hvilket format som brukes.
REST API (Representational State Transfer) er en arkitekturstil for API-er som bruker HTTP-protokollen og standard metoder som GET, POST, PUT og DELETE.
La oss bruke en restaurant-analogi:
Restaurant = Server med API
- Menyen = API-dokumentasjonen (liste over hva du kan bestille)
- Servitøren = API-et (tar imot bestillingen og leverer maten)
- Kjøkkenet = Server/database (lager maten/dataene)
- Du = Klientprogrammet (bestiller mat/data)
Du velger noe fra menyen, forteller servitøren hva du vil ha, servitøren går til kjøkkenet, og kommer tilbake med maten. Du trenger ikke vite hvordan kjøkkenet lager maten, bare hva du kan bestille og hvordan du bestiller det.
På samme måte sender et program en forespørsel til et API, API-et henter data fra databasen, og sender tilbake et svar med dataene.
REST API-er bruker HTTP-metoder for å utføre ulike operasjoner:
- GET: Hente data (lese)
- POST: Sende ny data (opprette)
- PUT: Oppdatere eksisterende data
- DELETE: Slette data
Disse kalles også CRUD-operasjoner: Create, Read, Update, Delete.
La oss se på et eksempel med et værmeldings-API:
Endepunkt: https://api.weatherapi.com/v1/current.json
Forespørsel:
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 = parametre (API-nøkkel og sted)
Svar (JSON):
{
"location": {
"name": "Oslo",
"country": "Norway"
},
"current": {
"temp_c": 12.5,
"condition": {
"text": "Partly cloudy"
}
}
}Programmet ditt kan nå bruke disse dataene til å vise været i appen.
Et API består av flere endepunkter (endpoints), som er spesifikke URL-er som utfører ulike funksjoner.
Eksempel fra et sosiale medier-API:
- GET /users/123 – Hent bruker med ID 123
- GET /users/123/posts – Hent alle poster fra bruker 123
- POST /posts – Opprett ny post
- PUT /posts/456 – Oppdater post med ID 456
- DELETE /posts/456 – Slett post med ID 456
Hvert endepunkt har:
- En URL (adressen)
- En HTTP-metode (GET, POST, osv.)
- Parametre (valgfri data som sendes med)
- Et svar (data som returneres)
Struktur:
- Data organiseres i nøkkel-verdi-par: "navn": "verdi"
- Objekter skrives med krøllparenteser: { }
- Lister skrives med hakeparenteser: [ ]
- Støtter strings, tall, boolske verdier, null, objekter og lister
Her er et eksempel på JSON-data fra et API:
{
"student": {
"navn": "Emma Hansen",
"alder": 18,
"aktiv": true,
"karakterer": [5, 4, 6, 5],
"kontakt": {
"epost": "emma@example.com",
"telefon": "12345678"
}
}
}Forklaring:
- "navn" er en string
- "alder" er et tall
- "aktiv" er en boolsk verdi
- "karakterer" er en liste med tall
- "kontakt" er et nestet objekt
Dette formatet er enkelt å parse (tolke) i Python med json-modulen.
Alle gode API-er har dokumentasjon som forklarer:
- Hvilke endepunkter som finnes
- Hvilke HTTP-metoder som støttes
- Hvilke parametre som kreves
- Hvilket format svaret har
- Eksempler på bruk
- Autentisering (hvis nødvendig)
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 bruker et API, bør du alltid lese dokumentasjonen nøye.
Mange API-er krever autentisering for å sikre at bare autoriserte brukere får tilgang. Den vanligste metoden er å bruke en API-nøkkel.
Hvorfor API-nøkler?
- Hindre misbruk (for mange forespørsler)
- Spore hvem som bruker API-et
- Begrense tilgang til betalte funksjoner
- Sikkerhet (hindre uautorisert tilgang)
Bruk av API-nøkkel:
API-nøkkelen sendes vanligvis som en 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: Behandle API-nøkler som passord – del dem aldri offentlig!
Her er noen populære API-er du kan eksperimentere med:
1. JSONPlaceholder (gratis test-API):
- URL: https://jsonplaceholder.typicode.com
- Endepunkter: /posts, /users, /comments
- Krever ingen API-nøkkel
- Perfekt for øving
2. Open-Meteo (værmeldinger):
- URL: https://api.open-meteo.com
- Gratis og ingen API-nøkkel nødvendig
- Værdata for hele verden
3. REST Countries:
- URL: https://restcountries.com/v3.1
- Informasjon om alle land
- Gratis uten API-nøkkel
4. The Dog API:
- URL: https://dog.ceo/api
- Tilfeldige hundebilder
- Gratis og morsomt
Disse er gode å starte med når du lærer API-programmering!
Oppsummering
I dette kapittelet har du lært:
- API: regler og protokoller som lar programmer kommunisere.
- HTTP-metoder: GET, POST, PUT og DELETE.
- REST: arkitekturstil for web-API-er.
- JSON: tekstbasert dataformat for datautveksling.
- Praktisk bruk: hente data fra ulike API-er.
Noekkelbegreper
| Begrep | Forklaring |
|---|---|
| API | Grensesnitt for kommunikasjon mellom programmer |
| REST | Arkitekturstil for web-API-er |
| 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.