GET

HTTP-metod

Specifikation av HTTP-metoden GET

Med GET-metoden begärs överföring av en aktuell vald representation för målresursen. GET är den primära mekanismen för informationshämtning och fokus för nästan alla prestandaoptimeringar. När man talar om att hämta någon identifierbar information via HTTP, syftar man därför i allmänhet på att göra en GET-begäran.

Det är frestande att tänka på resursidentifierare som fjärrfilsystemets sökvägar och på representationer som en kopia av innehållet i sådana filer. I själva verket är det så många resurser implementeras (se avsnitt 9.1 för relaterade säkerhetsöverväganden). Det finns dock inga sådana begränsningar i praktiken. HTTP-gränssnittet för en resurs kan lika gärna implementeras som ett träd av innehållsobjekt, en programmatisk vy över olika databasposter eller en gateway till andra informationssystem. Även när URI-mappningsmekanismen är kopplad till ett filsystem, kan en ursprungsserver vara konfigurerad att köra filerna med begäran som indata och skicka utdata som representation i stället för att överföra filerna direkt. Oavsett vilket behöver endast ursprungsservern veta hur var och en av dess resursidentifierare motsvarar en implementering och hur varje implementering lyckas välja och skicka en aktuell representation av målresursen i ett svar på GET.

En klient kan ändra semantiken för GET till att vara en "range request", begära överföring av endast vissa delar av den valda representationen, genom att skicka ett Range header field i begäran (RFC7233).

En nyttolast i en GET-begäran har ingen definierad semantik; om en nyttolast skickas med en GET-begäran kan vissa befintliga implementationer avvisa begäran.

Svaret på en GET-begäran är cachbart; en cache får använda det för att tillgodose efterföljande GET- och HEAD-begäran om inte annat anges i rubrikfältet Cache-Control (avsnitt 5.2 i RFC7234).

Svaret på en GET-begäran är cachbart.

HTTP-metod GET har specificerats i avsnitt 4.3.1 i dokument RFC 7231 av Internet Engineering Task Force (IETF) och World Wide Web Consortium (W3C).

Beskrivning av GET-metoden

GET-metoden i HTTP-protokollet kan jämföras med en digital bibliotekarie. Den frågar artigt servern att presentera data utan att göra några ändringar i datan själv - en rent passiv förfrågan.

Vad gör GET-metoden speciell?

  1. Konsekvens: Föreställ dig att fråga bibliotekarien om samma bok flera gånger - du skulle få samma bok varje gång. Detsamma gäller för GET-förfrågan: den levererar konsekvent samma resultat.
  2. Läs, skriv inte: GET-förfrågan har karaktären av en observatör. Den tittar på data men ändrar inte den.
  3. Information i URL:en: Tänk på URL:en som en adress eller ett indexkort. Det anger vilken bok eller information du letar efter. Men var försiktig: dessa kort bör inte innehålla privata anteckningar, eftersom de kan ses av andra.
  4. Snabba och effektiva svar: Tack vare möjligheten att cacha svar kan GET-metoden snabbt svara på upprepade förfrågningar, mycket som en välorganiserad bibliotekarie som vet exakt var varje bok finns.

Men det finns också begränsningar:

  1. Begränsat utrymme för anteckningar: URL:en har bara så mycket utrymme för information. Det är som att skriva på ett litet indexkort.
  2. Inga hemligheter: Eftersom URL:er är synliga och kan lagras bör du inte skriva ner någon känslig information på dem.
  3. Inget ingripande: En observatör påverkar inte det de observerar. Därför bör GET-metoden inte användas för att ändra data. Det finns andra verktyg i vår digitala verktygslåda för det.

Sammanfattningsvis är GET-metoden ett pålitligt och viktigt verktyg i den digitala världen, som hjälper oss att hämta information effektivt och säkert.

Exempel för 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