Možda ste čuli za GET i POST zahtjeve, ali oni su tek početak.

Svaki HTTP zahtjev koristi metodu za opis svoje osnovne svrhe. Svaka metoda ima posebne namjene za zadatke u rasponu od dohvaćanja web stranice do brisanja izvora. GET i POST dva su najpoznatija, ali ima ih još sedam.

Saznajte više o ovom konceptu i čemu služi svaka od devet mogućih HTTP metoda.

Što je HTTP metoda?

Svaki HTTP zahtjev koji napravite uključuje radnju i cilj za tu radnju, slično glagolu i imenici koji djeluju kao objekt.

URL identificira jedinstveni resurs koji djeluje kao cilj zahtjeva. U međuvremenu, glagol - koju radnju izvršiti na tom URL-u - predstavljen je metodom.

Prvi redak HTTP zahtjeva pruža najvažnije informacije uključujući HTTP verziju, URL resursa i metodu zahtjeva:

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

Kojih je 9 HTTP metoda?

Prve četiri metode ekvivalentne su četirima radnjama iz CRUD modela: Stvaranje, Čitanje, Ažuriranje i Brisanje. Odgovarajuće HTTP metode su POST, DOBITI, STAVITI, i IZBRISATI.

instagram viewer

DOBITI

Najčešći, zadani zahtjev koji ćete poslati kada pregledavate web i klikate veze ili tražite podatke putem API-ja. Poslužitelj bi trebao vratiti resurs u svom tijelu odgovora.

POST

Koristite POST za stvaranje novih resursa, osobito kada ti resursi imaju prepoznatljiv nadređeni resurs. Na primjer, ako imate resurs /clients, trebali biste stvoriti novog klijenta slanjem potrebnih podataka POST-om na /clients.

STAVITI

Ažurirajte ili zamijenite postojeći resurs. Ovo je slično POST-u, ali je klijent odgovoran za odabir jedinstvenog identifikatora za resurs. Za stvaranje resursa pomoću PUT-a, URL resursa treba sadržavati identifikator, na primjer, /clients/007.

IZBRISATI

Koristite ovu metodu za brisanje resursa koje ste naveli u URL-u. Kao i sve HTTP metode, podrška se svodi na poslužitelj. Svakome može omogućiti brisanje resursa, iako bi to očito bilo riskantno. Poslužitelj koji podržava DELETE obično će zahtijevati autentifikacija i autorizacija.

Dvije druge metode daju male varijacije na gore navedeno: ZAKRPA i GLAVA. Možda će vam biti korisni kada koristite određene API-je ili ako gradite vlastiti.

ZAKRPA

Metoda PATCH ažurira postojeći resurs samo s djelomičnim podacima. Drugim riječima, ne morate dostaviti puni prikaz novog resursa, samo polja koja trebate ažurirati.

GLAVA

HEAD zahtjev je kada želite informacije o resursu, ali ne i sam resurs. Odgovor neće sadržavati tijelo, ali će sadržavati skup korisnih HTTP zaglavlja. Možete saznati ukupnu veličinu datoteke prije nego što je preuzmete putem zaglavlja odgovora Duljina sadržaja.

Preostale metode -OPCIJE, SPOJITI, i TRAG— nejasniji su. Bave se metapodacima, umrežavanjem i rješavanjem problema. Možda će vam biti korisni u određenim vrstama programiranja, ali vjerojatno ih nećete koristiti svaki dan.

OPCIJE

Poslužitelj bi trebao odgovoriti na ovu metodu govoreći vam koje HTTP metode resurs zapravo podržava. Ovo može biti korisno za otkrivanje.

SPOJITI

Određene vrste mrežnog softvera mogu koristiti ovu metodu za uspostavljanje tunela između dva računala. Ovo se često koristi za pokretanje HTTPS veze putem proxyja.

TRAG

Ova metoda je korisna za rješavanje problema. Nakon što ga primi, poslužitelj bi trebao vratiti zahtjev koji je primio u tijelu odgovora. Metoda pruža mehanizam za provjeru jesu li posredni strojevi promijenili neke detalje zahtjeva.

GET i HEAD jedine su dvije metode koje podržava svaki opći web poslužitelj. Određeni poslužitelj može ili ne mora podržavati druge metode, pa biste prvo trebali provjeriti.

Kada biste mogli koristiti ove metode?

Većinu vremena HTTP metode će vam biti transparentne. Međutim, morat ćete ih uzeti u obzir ako dodate obrazac na web stranicu ili koristite API.

HTTP metode u HTML-u

The oblik elementi metoda atribut vam omogućuje postavljanje HTTP metode koja će se koristiti kada se obrazac pošalje. HTML podržava samo objaviti i dobiti vrijednosti za ovaj atribut—plus nejasna dijaloška alternativa.

<oblikmetoda="post">
...
oblik>

Možete koristiti značajke poput Chromeovi alati za razvojne programere pogledati Mreža prometa i potvrdite metodu koju vaš preglednik šalje za određeni zahtjev. Imajte na umu da će većina web obrazaca poslati POST jer oni obično ažuriraju podatke na poslužitelju. Međutim, mnogi obrasci za pretraživanje koriste GET budući da jednostavno dohvaćaju podatke bez da ih mijenjaju.

Budući da POST podaci nisu dio URL-a, privatniji su nego ako ih pošaljete putem GET-a. Podaci još uvijek postoje u tijelu zahtjeva gdje ih, u teoriji, napadač može presresti. Ali slanje podataka putem HTTPS-a trebalo bi ublažiti ovaj problem.

Nikada ne biste trebali implementirati korisničku prijavu s GET zahtjevima. Iako se prijava može više činiti operacijom čitanja nego stvaranjem ili ažuriranjem, svejedno morate koristiti POST za zaštitu podataka.

Budući da HTML obrasci podržavaju samo GET i POST, ne možete izravno stvoriti obrazac koji, na primjer, briše resurs na poslužitelju. Uobičajeno zaobilazno rješenje, koje poštuje REST principe na poslužitelju, je korištenje varijable rezerviranog mjesta i pretvaranje da je to izvorna HTTP metoda. Na primjer:

<oblikmetoda="post">
<ulaznitip="skriven"Ime="_metoda"vrijednost="IZBRISATI" />
...
oblik>

Vaš kod na strani poslužitelja može provjeriti prisutnost ove varijable 'proxy metode' i tretirati je kao da je to prava korištena metoda. Na primjer, u PHP-u:

$metoda = $_SERVER["REQUEST_METHOD"];

ako (ključ_niza postoji("_metoda", $_ZAHTJEV)) {
$metoda = $_REQUEST["_metoda"];
}

Programsko slanje HTTP zahtjeva

Web Fetch API pruža fetch() JavaScript funkciju koju možete koristiti za slanje HTTP zahtjeva. Podržava čitav niz metoda, a ne samo GET i POST koje podržava HTML.

Funkcija dohvaćanja će prema zadanim postavkama poslati GET zahtjev. Da biste koristili drugu metodu, navedite njen naziv kao vrijednost za a metoda svojstvo u objektu koje šaljete kao drugi argument.

dohvati (' https://example.com/', { metoda: "GLAVA" });

Također možete slati HTTP zahtjeve s mnogih jezika na strani poslužitelja, uključujući PHP. U tom jeziku, biblioteka curl je uobičajen način slanja takvih zahtjeva.

Biblioteka curl ima opciju CURLOPT_CUSTOMREQUEST koju možete postaviti da odredite metodu

ako ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'STAVITI');
curl_exec($ch);
// ...
}

Putem naredbenog retka

Alat za naredbeni redak curl omogućuje vam prijenos podataka na ili s poslužitelja, putem jednog od nekoliko protokola. HTTP (i HTTPS) dva su vrlo česta slučaja upotrebe.

Prema zadanim postavkama, curl šalje GET zahtjev, što možete potvrditi sljedećom naredbom:

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

Metodu zahtjeva možete vidjeti u petom retku izlaza:

Možete promijeniti metodu zahtjeva koju curl šalje pomoću oznake -X:

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

Sada, curl šalje zahtjev koristeći POST metodu:

HTTP ima mnoge namjene

Većina onoga što radite na webu uključivat će standardne GET zahtjeve, uz povremeni POST za podnošenje obrazaca. Ali HTTP je puno ekspresivniji protokol nego što to sugerira.

Neke od najčešćih metoda odražavaju CRUD model koji HTTP čini izvrsnom osnovom za izgradnju API-ja usmjerenog na resurse.