Galbūt girdėjote apie GET ir POST užklausas, bet tai tik pradžia.

Kiekviena HTTP užklausa naudoja metodą pagrindiniam jos tikslui apibūdinti. Kiekvienas metodas naudojamas konkrečiai užduotims, pradedant nuo tinklalapio gavimo ir baigiant šaltinio ištrynimu. GET ir POST yra du labiausiai žinomi, tačiau yra dar septyni.

Sužinokite apie šią koncepciją ir kam skirtas kiekvienas iš devynių galimų HTTP metodų.

Kas yra HTTP metodas?

Kiekviena jūsų HTTP užklausa apima veiksmą ir to veiksmo tikslą, panašiai kaip veiksmažodis ir daiktavardis, kurie veikia kaip objektas.

URL identifikuoja unikalų šaltinį, veikiantį kaip užklausos tikslas. Tuo tarpu veiksmažodis – kokį veiksmą atlikti tame URL – pavaizduotas metodu.

Pirmoje HTTP užklausos eilutėje pateikiama svarbiausia informacija, įskaitant HTTP versiją, šaltinio URL ir užklausos metodą:

GET /software/htp/cics/index.html HTTP/1.1

Kokie yra 9 HTTP metodai?

Pirmieji keturi metodai atitinka keturis veiksmus iš CRUD modelio: Kurti, Skaityti, Atnaujinti ir Naikinti. Atitinkami HTTP metodai yra PAST, GAUTI, PUT, ir IŠTRINTI.

instagram viewer

GAUTI

Dažniausia numatytoji užklausa, kurią išsiųsite naršydami žiniatinklį ir spustelėdami nuorodas arba prašydami duomenų per API. Serveris turėtų grąžinti išteklius savo atsakymo tekste.

PAST

Naudokite POST, kad sukurtumėte naujus išteklius, ypač kai tie ištekliai turi identifikuojamus pirminius išteklius. Pavyzdžiui, jei turite /klientų išteklius, turėtumėte sukurti naują klientą, siųsdami reikiamus duomenis į /clients.

PUT

Atnaujinkite arba pakeiskite esamą šaltinį. Tai panašu į POST, tačiau klientas yra atsakingas už unikalaus šaltinio identifikatoriaus pasirinkimą. Norint sukurti išteklius naudojant PUT, ištekliaus URL turi būti nurodytas identifikatorius, pvz. /clients/007.

IŠTRINTI

Naudokite šį metodą norėdami ištrinti URL nurodytą šaltinį. Kaip ir visi HTTP metodai, palaikymas priklauso nuo serverio. Tai gali leisti bet kam ištrinti išteklius, nors tai būtų akivaizdžiai rizikinga. Paprastai reikalingas serveris, palaikantis DELETE autentifikavimas ir autorizacija.

Du kiti metodai šiek tiek skiriasi nuo pirmiau minėtų būdų: PLEISTRAS ir GALVA. Jie gali būti naudingi naudojant tam tikras API arba jei kuriate savo.

PLEISTRAS

PATCH metodas atnaujina esamą šaltinį tik daliniais duomenimis. Kitaip tariant, jums nereikia pateikti viso naujojo ištekliaus, tik laukus, kuriuos reikia atnaujinti.

GALVA

HEAD užklausa skirta tada, kai norite gauti informacijos apie išteklius, bet ne apie patį išteklį. Atsakyme nebus turinio, bet jame bus naudingų HTTP antraščių rinkinys. Bendrą failo dydį galite sužinoti prieš jį atsisiųsdami naudodami atsakymo antraštę „Turinio ilgis“.

Likę metodai -GALIMYBĖS, PRISIJUNGTI, ir TRACE– yra neaiškesni. Jie sprendžia metaduomenis, tinklų kūrimą ir trikčių šalinimą. Jums gali būti naudingi tam tikro tipo programavimas, bet tikriausiai nenaudosite jų kasdien.

GALIMYBĖS

Serveris turėtų atsakyti į šį metodą nurodydamas, kuriuos HTTP metodus išteklius iš tikrųjų palaiko. Tai gali būti naudinga atradimams.

PRISIJUNGTI

Tam tikrų tipų tinklo programinė įranga gali naudoti šį metodą tuneliui tarp dviejų kompiuterių sukurti. Tai dažnai naudojama HTTPS ryšiui inicijuoti per tarpinį serverį.

TRACE

Šis metodas yra naudingas trikčių šalinimui. Gavęs jį, serveris turėtų atsiųsti užklausą, kurią gavo atsakymo tekste. Šis metodas suteikia mechanizmą, leidžiantį patikrinti, ar tarpinės mašinos nepakeitė kokios nors užklausos informacijos.

GET ir HEAD yra vieninteliai du metodai, kuriuos palaiko kiekvienas bendras žiniatinklio serveris. Tam tikras serveris gali palaikyti kitus metodus arba ne, todėl pirmiausia turėtumėte patikrinti.

Kada galite naudoti šiuos metodus?

Daugeliu atvejų HTTP metodai jums bus skaidrūs. Tačiau turėsite į juos atsižvelgti, jei prie tinklalapio pridėsite formą arba naudosite API.

HTTP metodai HTML

The forma elementas metodas atributas leidžia nustatyti HTTP metodą, kuris bus naudojamas, kai forma pateikiama. HTML palaiko tik paštu ir gauti šio atributo reikšmės ir neaiški dialogo alternatyva.

<formametodas="post">
...
forma>

Galite naudoti tokias funkcijas kaip „Chrome“ kūrėjo įrankiai Žiūrėti Tinklas srautą ir patvirtinkite metodą, kurį naršyklė siunčia konkrečiai užklausai. Atminkite, kad dauguma žiniatinklio formų išsiųs POST, nes jos paprastai atnaujina duomenis serveryje. Tačiau daugelis paieškos formų naudoja GET, nes jos tiesiog gauna duomenis jų nekeisdamos.

Kadangi POST duomenys nėra URL dalis, jie yra labiau privatūs nei siunčiant juos per GET. Duomenys vis dar yra užklausos tekste, kur teoriškai užpuolikas gali juos perimti. Tačiau duomenų siuntimas per HTTPS turėtų sumažinti šią problemą.

Niekada neturėtumėte įdiegti vartotojo prisijungimo su GET užklausomis. Nors prisijungimas gali atrodyti labiau kaip skaitymo operacija, o ne kūrimas ar atnaujinimas, vis tiek turite naudoti POST, kad apsaugotumėte duomenis.

Kadangi HTML formos palaiko tik GET ir POST, negalite tiesiogiai sukurti formos, kuri, pavyzdžiui, ištrintų išteklius serveryje. Įprastas sprendimas, laikantis REST principų serveryje, yra naudoti rezervuotos vietos kintamąjį ir apsimesti, kad tai buvo pradinis HTTP metodas. Pavyzdžiui:

<formametodas="post">
<įvestistipo="paslėpta"vardas="_metodas"vertė="IŠTRINTI" />
...
forma>

Jūsų serverio kodas gali patikrinti, ar nėra šio „proxy metodo“ kintamojo, ir traktuoti jį taip, lyg tai būtų tikrasis naudojamas metodas. Pavyzdžiui, PHP:

$metodas = $_SERVER[„REQUEST_METHOD“];

jeigu (masyvas_raktas_egzistuoja("_metodas", $_REQUEST)) {
$metodas = $_REQUEST["_metodas"];
}

HTTP užklausų siuntimas programiškai

„Web Fetch“ API teikia „Fetch() JavaScript“ funkciją, kurią galite naudoti HTTP užklausai siųsti. Jis palaiko visą spektrą metodų, ne tik GET ir POST, kuriuos palaiko HTML.

Pagal numatytuosius nustatymus gavimo funkcija išsiųs GET užklausą. Norėdami naudoti kitą metodą, nurodykite jo pavadinimą kaip a reikšmę metodas ypatybę objekte, kurį siunčiate kaip antrą argumentą.

atnešti (' https://example.com/', { metodas: "GALVA" });

Taip pat galite siųsti HTTP užklausas iš daugelio serverio kalbų, įskaitant PHP. Ta kalba garbanojimo biblioteka yra įprastas tokių užklausų siuntimo būdas.

Garbanojimo bibliotekoje yra CURLOPT_CUSTOMREQUEST parinktis, kurią galite nustatyti norėdami nurodyti metodą

jeigu ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, „Įdėti“);
curl_exec($ch);
// ...
}

Per komandinę eilutę

Curl komandinės eilutės įrankis leidžia perkelti duomenis į serverį arba iš jo vienu iš kelių protokolų. HTTP (ir HTTPS) yra du labai dažni naudojimo atvejai.

Pagal numatytuosius nustatymus curl siunčia GET užklausą, ką galite patvirtinti naudodami šią komandą:

curl -v -s -o /dev/null example.com/get-test

Užklausos metodą galite pamatyti penktoje išvesties eilutėje:

Galite pakeisti užklausos metodą, kurį curl siunčia naudodami vėliavėlę -X:

curl -v -s -o /dev/null example.com/get-test -X POST

Dabar curl siunčia užklausą naudodama POST metodą:

HTTP turi daugybę naudojimo būdų

Didžioji dalis to, ką darote žiniatinklyje, bus susiję su standartinėmis GET užklausomis ir kartais POST, kai pateikiate formas. Tačiau HTTP yra daug išraiškingesnis protokolas, nei tai rodo.

Kai kurie dažniausiai pasitaikantys metodai atspindi CRUD modelį, todėl HTTP yra puikus pagrindas kurti į išteklius orientuotą API.