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 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.

API (Application Programming Interface)

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.

HTTP-metoder

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.

✏️Eksempel: Værmeldinger-API

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

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

JSON (JavaScript Object Notation)
JSON er et tekstbasert dataformat som brukes til å utveksle data mellom programmer. JSON er lett å lese for både mennesker og maskiner, og er standard for de fleste moderne API-er.

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

✏️Eksempel: JSON-struktur

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

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

eller

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

Viktig: Behandle API-nøkler som passord – del dem aldri offentlig!

✏️Praktisk eksempel: Forskjellige API-er

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


BegrepForklaring
APIGrensesnitt for kommunikasjon mellom programmer
RESTArkitekturstil for web-API-er
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.