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 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é?
- 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.
- Olvasás, nem írás: A GET kérésnek megfigyelő jellege van. Megnézi az adatokat, de nem módosítja azokat.
- 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.
- 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:
- 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.
- Nincsenek titkok: Mivel az URL-ek láthatók és tárolhatók, nem szabad érzékeny információkat feljegyezni rajtuk.
- 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
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
Content-Type: application/json
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache