Morda ste že slišali za zahtevi GET in POST, vendar sta šele začetek.
Vsaka zahteva HTTP uporablja metodo za opis svojega bistvenega namena. Vsaka metoda ima posebne namene za naloge, od pridobivanja spletne strani do brisanja vira. GET in POST sta najbolj znana, obstaja pa še sedem drugih.
Spoznajte ta koncept in čemu služi vsaka od devetih možnih metod HTTP.
Kaj je metoda HTTP?
Vsaka zahteva HTTP, ki jo naredite, vključuje dejanje in cilj za to dejanje, podobno kot glagol in samostalnik, ki delujeta kot predmet.
URL identificira edinstven vir, ki deluje kot cilj zahteve. Medtem je glagol – kakšno dejanje izvesti na tem URL-ju – predstavljen z metodo.
Prva vrstica zahteve HTTP zagotavlja najpomembnejše informacije, vključno z različico HTTP, URL-jem vira in metodo zahteve:
GET /software/htp/cics/index.html HTTP/1.1
Kaj je 9 metod HTTP?
Prve štiri metode so enakovredne štirim dejanjem iz modela CRUD: Ustvari, Branje, Posodobi in Izbriši. Ustrezne metode HTTP so OBJAVI, DOBITI, POSTAVITE, in IZBRIŠI.
DOBITI
Najpogostejša privzeta zahteva, ki jo boste poslali, ko brskate po spletu in kliknete povezave ali zahtevate podatke prek API-ja. Strežnik mora vir vrniti v svojem telesu odgovora.
OBJAVI
Uporabite POST za ustvarjanje novih virov, zlasti če imajo ti viri prepoznavni nadrejeni vir. Na primer, če imate vir /clients, bi morali ustvariti novega odjemalca tako, da zahtevane podatke objavite v /clients.
POSTAVITE
Posodobite ali zamenjajte obstoječi vir. To je podobno POST-u, vendar je odjemalec odgovoren za izbiro edinstvenega identifikatorja za vir. Če želite ustvariti vir z uporabo PUT, mora URL vira vsebovati identifikator, na primer /clients/007.
IZBRIŠI
S to metodo izbrišite vir, ki ga podate v URL-ju. Kot pri vseh metodah HTTP je podpora odvisna od strežnika. Vsakemu lahko omogoči brisanje vira, čeprav bi bilo to očitno tvegano. Strežnik, ki podpira DELETE, običajno zahteva avtentikacijo in avtorizacijo.
Dve drugi metodi omogočata manjše razlike glede zgornjega: POKRIV in GLAVA. Morda se vam bodo zdeli koristni pri uporabi določenih API-jev ali če gradite svojega.
POKRIV
Metoda PATCH posodobi obstoječi vir le z delnimi podatki. Z drugimi besedami, ni vam treba predložiti celotne predstavitve novega vira, le polja, ki jih morate posodobiti.
GLAVA
Zahteva HEAD je primerna za informacije o viru, ne pa tudi o viru samem. Odgovor ne bo vseboval telesa, bo pa vseboval niz uporabnih glav HTTP. Celotno velikost datoteke lahko ugotovite, preden jo prenesete, prek glave odgovora Content-Length.
Preostale metode -OPCIJE, POVEŽI, in TRACE-so bolj nejasni. Ukvarjajo se z metapodatki, mreženjem in odpravljanjem težav. Morda se vam bodo zdeli uporabni pri določenih vrstah programiranja, vendar jih verjetno ne boste uporabljali vsak dan.
OPCIJE
Strežnik bi se moral na to metodo odzvati tako, da vam pove, katere metode HTTP vir dejansko podpira. To je lahko koristno za odkrivanje.
POVEŽI
Nekatere vrste omrežne programske opreme lahko uporabljajo to metodo za vzpostavitev tunela med dvema računalnikoma. To se pogosto uporablja za vzpostavitev povezave HTTPS prek proxyja.
TRACE
Ta metoda je uporabna za odpravljanje težav. Ko ga prejme, mora strežnik poslati nazaj zahtevo, ki jo je prejel v telesu odgovora. Metoda zagotavlja mehanizem za preverjanje, ali so vmesni stroji spremenili katere koli podrobnosti zahteve.
GET in HEAD sta edini dve metodi, ki ju podpira vsak splošni spletni strežnik. Določen strežnik morda podpira ali ne podpira drugih metod, zato morate najprej preveriti.
Kdaj lahko uporabite te metode?
Večino časa bodo metode HTTP pregledne za vas. Vendar jih boste morali upoštevati, če dodate obrazec na spletno stran ali uporabite API.
Metode HTTP v HTML
The oblika elementov metoda omogoča nastavitev metode HTTP, ki bo uporabljena, ko bo obrazec oddan. HTML podpira samo post in dobiti vrednosti za ta atribut—plus nejasna alternativa pogovornega okna.
<oblikametoda="post">
...
oblika>
Uporabite lahko funkcije, kot so Chromova orodja za razvijalce za ogled Omrežje prometa in potrdite metodo, ki jo brskalnik pošlje za določeno zahtevo. Upoštevajte, da bo večina spletnih obrazcev poslala POST, saj običajno posodobijo podatke na strežniku. Številni iskalni obrazci pa uporabljajo GET, saj preprosto pridobijo podatke, ne da bi jih spremenili.
Ker podatki POST niso del URL-ja, so bolj zasebni, kot če bi jih poslali prek GET. Podatki še vedno obstajajo v telesu zahteve, kjer jih teoretično lahko napadalec prestreže. Toda pošiljanje podatkov prek HTTPS bi moralo ublažiti to težavo.
Nikoli ne bi smeli izvajati prijave uporabnika z zahtevami GET. Čeprav se prijava morda zdi bolj podobna operaciji branja kot ustvarjanju ali posodobitvi, morate še vedno uporabiti POST za zaščito podatkov.
Ker obrazci HTML podpirajo samo GET in POST, ne morete neposredno ustvariti obrazca, ki na primer izbriše vir na strežniku. Običajna rešitev, ki spoštuje načela REST na strežniku, je uporaba spremenljivke nadomestnega mesta in pretvarjanje, da je bila to prvotna metoda HTTP. Na primer:
<oblikametoda="post">
<vnosvrsta="skrit"ime="_metoda"vrednost="IZBRIŠI" />
...
oblika>
Vaša strežniška koda lahko preveri prisotnost te spremenljivke »metoda proxy« in jo obravnava, kot da bi bila uporabljena prava metoda. Na primer v PHP:
$method = $_SERVER["REQUEST_METHOD"];
če (matrični_ključ_obstaja("_metoda", $_REQUEST)) {
$metoda = $_REQUEST["_metoda"];
}
Programsko pošiljanje zahtev HTTP
API Web Fetch ponuja funkcijo fetch() JavaScript, ki jo lahko uporabite za pošiljanje zahteve HTTP. Podpira celotno paleto metod, ne le GET in POST, ki ju podpira HTML.
Funkcija pridobivanja bo privzeto poslala zahtevo GET. Če želite uporabiti drugo metodo, podajte njeno ime kot vrednost za a metoda v objektu, ki ga pošljete kot drugi argument.
prinesi (' https://example.com/', { metoda: "GLAVA" });
Zahteve HTTP lahko pošiljate tudi iz številnih strežniških jezikov, vključno s PHP. V tem jeziku je knjižnica curl običajen način pošiljanja takih zahtev.
Knjižnica curl ima možnost CURLOPT_CUSTOMREQUEST, ki jo lahko nastavite, da določite metodo
če ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_exec($ch);
// ...
}
Preko ukazne vrstice
Orodje ukazne vrstice curl vam omogoča prenos podatkov na ali iz strežnika prek enega od več protokolov. HTTP (in HTTPS) sta dva zelo pogosta primera uporabe.
Privzeto curl pošlje zahtevo GET, kar lahko potrdite z naslednjim ukazom:
curl -v -s -o /dev/null example.com/get-test
Metodo zahteve lahko vidite v peti vrstici izhoda:
Metodo zahteve, ki jo pošilja curl, lahko spremenite z uporabo zastavice -X:
curl -v -s -o /dev/null example.com/get-test -X POST
Zdaj curl pošlje zahtevo z metodo POST:
HTTP ima veliko uporab
Večina tega, kar počnete na spletu, bo vključevala standardne zahteve GET, z občasnim POST za oddajo obrazcev. Toda HTTP je veliko bolj izrazit protokol, kot to nakazuje.
Nekatere najpogostejše metode odražajo model CRUD, zaradi česar je HTTP odlična osnova za izgradnjo API-ja, osredotočenega na vire.