GET

HTTP módszer

A GET-es HTTP-módszer specifikációja

A GET módszer a cél erőforrás aktuálisan kiválasztott reprezentációjának átvitelét kéri. A GET az információkeresés elsődleges mechanizmusa, és szinte minden teljesítményoptimalizálás középpontjában áll. Ezért amikor arról beszélnek, hogy valamilyen azonosítható információt kérnek le a HTTP-n keresztül, általában GET-kérésre utalnak.

Kísértés, hogy az erőforrás-azonosítókra úgy gondoljunk, mint távoli fájlrendszeri elérési utcanevekre, a reprezentációkra pedig úgy, mint az ilyen fájlok tartalmának másolatára. Valójában sok erőforrás így van implementálva (a kapcsolódó biztonsági megfontolásokat lásd a 9.1. szakaszban). A gyakorlatban azonban nincsenek ilyen korlátozások. Egy erőforrás HTTP-felülete ugyanolyan valószínűséggel valósulhat meg tartalomobjektumok fájaként, különböző adatbázisrekordok programozott nézeteként vagy más információs rendszerek átjárójaként. Még akkor is, ha az URI-leképezési mechanizmus egy fájlrendszerhez van kötve, az eredetkiszolgálót úgy lehet konfigurálni, hogy a fájlokat a kéréssel bemenetként futtassa, és a kimenetet küldje el reprezentációként, ahelyett, hogy közvetlenül továbbítaná a fájlokat. Ettől függetlenül csak a kiindulási kiszolgálónak kell tudnia, hogy az egyes erőforrás-azonosítók hogyan felelnek meg egy megvalósításnak, és hogy az egyes megvalósítások hogyan tudják kiválasztani és elküldeni a célerőforrás aktuális reprezentációját a GET-re adott válaszban.

A kliens megváltoztathatja a GET szemantikáját, hogy "tartomány-kérés" legyen, és a kiválasztott reprezentációnak csak egy vagy több részét kérje át, a Range fejlécmező elküldésével a kérésben (RFC7233).

A GET-kérelem üzenetén belüli hasznos teher nem rendelkezik meghatározott szemantikával; a hasznos teher testének elküldése egy GET-kérelemben a kérés elutasítását eredményezheti egyes meglévő implementációkban.

A GET-kérelemre adott válasz gyorsítótárba helyezhető; a gyorsítótár felhasználhatja azt a későbbi GET- és HEAD-kérelmek kielégítésére, hacsak a Cache-Control fejlécmező másként nem jelzi (RFC7234 5.2 szakasza).

A GET-as HTTP-módszert az Internet Engineering Task Force (IETF) és a World Wide Web Consortium (W3C) a RFC 7231-as dokumentum 4.3.1. szakaszában határozta meg.

A GET módszer leírása

Az HTTP protokoll GET metódusa hasonlítható egy digitális könyvtároshoz. Udvariasan kéri a szervert, hogy mutassa be az adatokat, anélkül, hogy változtatásokat hajtana végre az adatokon - ez egy teljesen passzív kérés.

Mi teszi a GET metódust különlegessé?

  1. Konzisztencia: Képzeljük el, hogy többször is ugyanazt a könyvet kérjük a könyvtárostól - minden alkalommal ugyanazt a könyvet kapnánk. Ugyanez vonatkozik a GET kérésre: következetesen ugyanazt az eredményt szolgáltatja.
  2. Olvasás, nem írás: A GET kérésnek megfigyelő jellege van. Megnézi az adatokat, de nem módosítja azokat.
  3. Információ az URL-ben: Gondoljuk az URL-t címként vagy jegyzék kártyaként. Jelzi, melyik könyvet vagy információt keresjük. Azonban óvatosnak kell lennünk: ezeken a kártyákon nem szabad privát megjegyzéseket tartalmazniuk, mert mások is láthatják.
  4. Gyors és hatékony válaszok: A válaszok gyorsítótárazásának képességének köszönhetően a GET metódus gyorsan válaszolhat ismétlődő kérésekre, akárcsak egy jól szervezett könyvtáros, aki pontosan tudja, hol található minden könyv.

De vannak korlátai is:

  1. Korlátozott hely a jegyzetekhez: Az URL-ben csak korlátozott mennyiségű információt lehet tárolni. Mintha egy kis jegyzék kártyára írnánk.
  2. Nincsenek titkok: Mivel az URL-ek láthatók és tárolhatók, nem szabad érzékeny információkat feljegyezni rajtuk.
  3. Nincs beavatkozás: Egy megfigyelő nem befolyásolja azt, amit megfigyel. Ezért a GET metódust nem szabad adatmódosításra használni. Ehhez más eszközök állnak rendelkezésünkre a digitális eszköztárunkban.

Összességében a GET metódus egy megbízható és elengedhetetlen eszköz a digitális térben, segítve minket az információk hatékony és biztonságos lekérdezésében.

Példa a GET-es HTTP-módszerre

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