GET

HTTP metodas

HTTP metodo GET specifikacija

GET metodu prašoma perduoti šiuo metu pasirinktą tikslinio ištekliaus atvaizdavimą. GET yra pagrindinis informacijos paieškos mechanizmas ir beveik visų našumo optimizavimo būdų dėmesio centre. Taigi, kai žmonės kalba apie tam tikros identifikuojamos informacijos gavimą per HTTP, jie paprastai turi omenyje GET užklausos pateikimą.

Skatina manyti, kad išteklių identifikatoriai yra nuotolinės failų sistemos kelių pavadinimai, o atvaizdai - tokių failų turinio kopijos. Iš tikrųjų taip įgyvendinama daugelis išteklių (žr. 9.1 skyrių, kuriame aptariami susiję saugumo aspektai). Tačiau praktikoje tokių apribojimų nėra. Išteklių HTTP sąsaja lygiai taip pat gali būti įgyvendinta kaip turinio objektų medis, programinis vaizdas į įvairius duomenų bazės įrašus arba vartai į kitas informacines sistemas. Net kai URI atvaizdavimo mechanizmas susietas su failų sistema, kilmės serveris gali būti sukonfigūruotas taip, kad vykdytų failus su užklausa kaip įvestį ir siųstų išvestį kaip atvaizdavimą, o ne tiesiogiai perduotų failus. Nepriklausomai nuo to, tik kilmės serveris turi žinoti, kaip kiekvienas jo išteklių identifikatorius atitinka realizaciją ir kaip kiekviena realizacija sugeba atrinkti ir išsiųsti dabartinę tikslinio ištekliaus reprezentaciją atsakyme į GET.

Klientas gali pakeisti GET semantiką, kad ji būtų "diapazono užklausa", prašydamas perduoti tik tam tikrą (-as) atrinktos reprezentacijos dalį (-is), siųsdamas užklausoje antraštės lauką Range (RFC7233).

GET užklausos pranešime esanti naudingoji apkrova neturi apibrėžtos semantikos; siunčiant GET užklausos naudingosios apkrovos kūną, kai kurios esamos realizacijos gali atmesti užklausą.

Atsakymas į GET užklausą gali būti talpinamas į talpyklą; talpykla GALI jį naudoti vėlesnėms GET ir HEAD užklausoms tenkinti, nebent Cache-Control antraštės lauke būtų nurodyta kitaip (RFC7234 5.2 skirsnis).

HTTP metodą GET Interneto inžinerijos darbo grupė (IETF) ir Pasaulinis žiniatinklio konsorciumas (W3C) nurodė RFC 7231 dokumento 4.3.1 skirsnyje.

GET metodo aprašymas

HTTP protokolo GET metodas yra palyginamas su skaitmenine bibliotekininke. Jis maloniai prašo serverio pateikti duomenis be jokių pakeitimų pačiuose duomenyse – tai grynai pasyvus prašymas.

Kas daro GET metodą ypatingu?

  1. Nuoseklumas: Įsivaizduokite, kad prašote bibliotekininkės tos pačios knygos kelis kartus – kiekvieną kartą gausite tą pačią knygą. Tas pats taikoma GET užklausai: ji nuosekliai pateikia tą pačią informaciją.
  2. Skaito, bet nerašo: GET užklausa elgiasi kaip stebėtojas. Ji tik žiūri į duomenis, bet jų nekeičia.
  3. Informacija URL: Galite laikyti URL kaip adresą ar indekso kortelę. Ji nurodo, kurios knygos ar informacijos ieškote. Tačiau būkite atsargūs: šiose kortelėse neturėtų būti privačių pastabų, nes kitų žmonių jos gali būti matomos.
  4. Greitas ir efektyvus atsakymas: Dėka galimybės kešuoti atsakymus, GET metodas gali greitai atsakyti į pasikartojančius prašymus, panašiai kaip gerai suorganizuotas bibliotekininkas, žinantis, kur yra kiekviena knyga.

Tačiau yra ir apribojimų:

  1. Ribotas vietos užrašams: URL turi tik ribotą vietą informacijai. Tai tarsi rašyti ant mažos indekso kortelės.
  2. Jokių paslapčių: Kadangi URL yra matomi ir juos galima saugoti, jūs neturėtumėte užrašinėti jokios jautrios informacijos ant jų.
  3. Jokio įsikišimo: Stebėtojas neįtakoja tai, ką jis stebi. Todėl GET metodo neturėtų būti naudojama duomenims keisti. Tam turime kitų įrankių mūsų skaitmeninėje įrankių dėžėje.

Apskritai, GET metodas yra patikimas ir būtinas įrankis skaitmeninėje erdvėje, padedantis mums saugiai ir efektyviai gauti informaciją.

HTTP metodo GET pavyzdys

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