Tilbake
4.1
Hva er et API?

4.1 Hva er et API?

Introduksjon til API-er og deres rolle i moderne systemer.

55 min
6 oppgaver
APIRESTHTTP-metoder
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 6 oppgaver

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.

API (Application Programming Interface)

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.

HTTP-metodar

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.

✏️Eksempel: Værmeldingar-API

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=Oslo

Her 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)

JSON (JavaScript Object Notation)
JSON er eit tekstbasert dataformat som blir brukt til å utveksle data mellom program. JSON er lett å lese for både menneske og maskinar, og er standard for dei fleste moderne API-ar.

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

✏️Eksempel: JSON-struktur

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: Serverfeil

Fø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ØKKEL

eller

GET https://api.example.com/data
Headers: {
  "Authorization": "Bearer DIN_HEMMELIGE_NØKKEL"
}

Viktig: Handsam API-nøklar som passord – del dei aldri offentleg!

✏️Praktisk eksempel: Forskjellige API-ar

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


BegrepForklaring
APIGrensesnitt for kommunikasjon mellom program
RESTArkitekturstil for web-API-ar
JSONTekstbasert 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.