Web og HTTP
HTTP-protokollen
HTTP er reglerne for, hvordan en browser og en server taler sammen. Browseren sender en forespørgsel med en metode og en adresse, og serveren sender et svar med en statuskode og noget indhold. Hver forespørgsel står alene. Serveren husker ikke den forrige.
En samtale med to replikker
Alt, hvad der sker på nettet, følger den samme form: browseren spørger, serveren svarer. Så er den samtale slut.
En forespørgsel ser sådan her ud, når man skræller alt væk:
GET /studerende/12 HTTP/1.1
Host: eksempel.dk
Accept: application/json
Og svaret:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 48
{"id":12,"navn":"Ida","linje":"HA(it.)"}
Fire dele i hver: metoden og adressen, en række headers, en tom linje, og eventuelt et indhold. I svaret er første linje statuskoden i stedet.
Metoderne
| Metode | Betyder | Ændrer data? |
|---|---|---|
GET | hent noget | nej |
POST | opret noget nyt | ja |
PUT | erstat noget eksisterende | ja |
PATCH | ret en del af noget | ja |
DELETE | slet noget | ja |
Den vigtigste skelnen i praksis er GET mod POST:
- GET lægger sine data i adressen:
?soeg=ida&side=2. Det kan ses i historikken, deles i et link og gemmes i cachen. Derfor: aldrig adgangskoder eller personoplysninger i en GET. - POST lægger sine data i indholdet. Det er ikke kryptering, kun HTTPS krypterer, men det ryger ikke i adresselinjen og bliver ikke cachet.
At GET ikke må ændre noget, er en aftale, ikke en teknisk spærre. Bryder man
den, sletter en søgemaskine, der bare følger links, pludselig data.
Headers
Headers er ekstra oplysninger om forespørgslen eller svaret. Dem, du møder først:
Content-Type. Hvilket format indholdet er i, for eksempelapplication/json.Accept, hvilket format klienten gerne vil have.Authorization, legitimation, typisk en nøgle eller et token.Cache-Control, hvor længe svaret må genbruges.
Protokollen husker ingenting
HTTP er tilstandsløs: serveren husker ikke, at det var dig, der spurgte for et øjeblik siden. Hver forespørgsel skal selv bære alt, hvad der skal til for at forstå den.
Det er derfor, der findes cookies og tokens. De sendes med hver eneste gang og genskaber det, protokollen ikke husker. Det er også derfor, en session kan udløbe: den ligger et sted, der har sin egen levetid.
Sådan ser du det selv
Åbn browserens udviklerværktøjer og gå til fanen Netværk. Genindlæs siden. Nu kan du se hver eneste forespørgsel: metode, adresse, statuskode, størrelse og tid. Klik på en af dem, og du kan se headers og indhold.
Det er den hurtigste vej til at fejlfinde et API-kald, der ikke virker: gik forespørgslen overhovedet af sted, og hvad svarede serveren?
Kort opsamling
- Forespørgsel og svar, hver gang.
GEThenter,POSTopretter; GET-data står i adressen.- Headers beskriver indholdet og afsenderen.
- Serveren husker ikke noget mellem to forespørgsler.
Læs videre
- HTTP-statuskoder HTTP-statuskoder forklaret på dansk: 200, 301, 400, 401, 403, 404 og 500. Hvad de betyder, og hvem der har problemet. Dig eller serveren.
- Hvad er et API? Hvad er et API? Forklaret på dansk uden fagsprog, med et konkret eksempel på et kald, hvordan svaret ser ud, og hvad en API-nøgle er til.
- fetch - hent data fra et API Sådan bruger du fetch i JavaScript til at hente data fra et API. Forklaret på dansk, med fejlhåndtering, statuskoder og de fælder alle falder i.
Senest gennemgået .