GET

HTTP-metode

Spesifikasjon av HTTP-metoden GET

GET-metoden ber om overføring av en aktuell valgt representasjon for målressursen. GET er den primære mekanismen for informasjonsinnhenting og fokus for nesten alle ytelsesoptimaliseringer. Når man snakker om å hente identifiserbar informasjon via HTTP, refererer man derfor vanligvis til en GET-forespørsel.

Det er fristende å tenke på ressursidentifikatorer som eksterne filsystem-stinavn og representasjoner som en kopi av innholdet i slike filer. Det er faktisk slik mange ressurser er implementert (se avsnitt 9.1 for relaterte sikkerhetshensyn). Det finnes imidlertid ingen slike begrensninger i praksis. HTTP-grensesnittet for en ressurs kan like gjerne implementeres som et tre av innholdsobjekter, en programmatisk visning av ulike databaseposter eller en gateway til andre informasjonssystemer. Selv når URI-kartleggingsmekanismen er knyttet til et filsystem, kan en opprinnelsesserver være konfigurert til å kjøre filene med forespørselen som input og sende output som representasjon i stedet for å overføre filene direkte. Uansett er det bare opprinnelsesserveren som trenger å vite hvordan hver av ressursidentifikatorene tilsvarer en implementering, og hvordan hver implementering klarer å velge og sende en aktuell representasjon av målressursen i et svar på GET.

En klient kan endre semantikken til GET til å være en "range request", som ber om overføring av bare noen deler av den valgte representasjonen, ved å sende et Range header-felt i forespørselen (RFC7233).

En nyttelast i en GET-forespørselsmelding har ingen definert semantikk; å sende en nyttelast i en GET-forespørsel kan føre til at noen eksisterende implementasjoner avviser forespørselen.

Svaret på en GET-forespørsel kan lagres i hurtigbufferen; en hurtigbuffer KAN bruke det til å tilfredsstille påfølgende GET- og HEAD-forespørsler, med mindre annet er angitt i Cache-Control-headerfeltet (avsnitt 5.2 i RFC7234).

HTTP-metode GET er spesifisert i avsnitt 4.3.1 i dokument RFC 7231 av Internet Engineering Task Force (IETF) og World Wide Web Consortium (W3C).

Beskrivelse av GET-metoden

GET-metoden i HTTP-protokollen kan sammenlignes med en digital bibliotekar. Den ber pent serveren om å presentere data uten å gjøre endringer i selve dataene – en rent passiv forespørsel.

Hva gjør GET-metoden spesiell?

  1. Konsistens: Forestill deg å spørre bibliotekaren om samme bok flere ganger – du ville fått den samme boken hver gang. Det samme gjelder for GET-forespørselen: den leverer konsekvent det samme resultatet.
  2. Les, ikke skriv: GET-forespørselen har karakteren av en observatør. Den ser på data, men endrer den ikke.
  3. Informasjon i URL: Tenk på URL-en som en adresse eller et indekskort. Den angir hvilken bok eller informasjon du leter etter. Men vær forsiktig: disse kortene bør ikke inneholde private notater, da de kan ses av andre.
  4. Raske og effektive svar: Takket være muligheten til å cache svar, kan GET-metoden raskt svare på gjentatte forespørsler, akkurat som en godt organisert bibliotekar som vet nøyaktig hvor hver bok er plassert.

Men det er også begrensninger:

  1. Begrenset plass for notater: URL-en har bare så mye plass for informasjon. Det er som å skrive på et lite indekskort.
  2. Ingen hemmeligheter: Siden URL-er er synlige og kan lagres, bør du ikke notere sensitiv informasjon på dem.
  3. Ingen innblanding: En observatør påvirker ikke det de observerer. Derfor bør GET-metoden ikke brukes til å endre data. Det finnes andre verktøy i vår digitale verktøykasse for det.

Alt i alt er GET-metoden et pålitelig og viktig verktøy i den digitale verden, som hjelper oss med å hente informasjon effektivt og trygt.

Eksempel for HTTP-metoden GET

Request header:
GET /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/58.0.3029.110 Safari/537
Accept: application/json
Accept-Language: de-DE,de;q=0.5
Connection: keep-alive
Cache-Control: max-age=0
Response header:
Content-Type: application/json
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache