Poate că ați auzit de solicitările GET și POST, dar sunt doar începutul.

Fiecare cerere HTTP folosește o metodă pentru a-și descrie scopul esențial. Fiecare metodă are utilizări specifice pentru sarcini, de la preluarea unei pagini web până la ștergerea unei resurse. GET și POST sunt cele două cele mai familiare, dar mai sunt șapte.

Aflați despre acest concept și pentru ce este fiecare dintre cele nouă metode HTTP posibile.

Ce este o metodă HTTP?

Fiecare solicitare HTTP pe care o faceți include o acțiune și o țintă pentru acțiunea respectivă, la fel ca un verb și un substantiv care acționează ca un obiect.

URL-ul identifică o resursă unică, acționând ca țintă a cererii. Între timp, verbul — ce acțiune să se efectueze pe acea adresă URL — este reprezentat de o metodă.

Prima linie a unei solicitări HTTP oferă cele mai importante informații, inclusiv versiunea HTTP, adresa URL a resursei și metoda de solicitare:

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

Care sunt cele 9 metode HTTP?

Primele patru metode sunt echivalente ale celor patru acțiuni din modelul CRUD: Creare, Citire, Actualizare și Ștergere. Metodele HTTP respective sunt

POST, OBȚINE, A PUNE, și ȘTERGE.

OBȚINE

Cea mai comună solicitare implicită pe care o veți trimite atunci când navigați pe web și faceți clic pe linkuri sau când solicitați date printr-un API. Serverul ar trebui să returneze resursa în corpul său de răspuns.

POST

Utilizați POST pentru a crea resurse noi, în special atunci când acele resurse au o resursă părinte identificabilă. De exemplu, dacă aveți o resursă /clients, ar trebui să creați un nou client prin POSTAREA datelor necesare la /clients.

A PUNE

Actualizați sau înlocuiți o resursă existentă. Acest lucru este similar cu POST, dar clientul este responsabil pentru alegerea unui identificator unic pentru resursă. Pentru a crea o resursă folosind PUT, adresa URL a resursei ar trebui să includă un identificator, de exemplu, /clients/007.

ȘTERGE

Utilizați această metodă pentru a șterge resursa pe care o specificați în adresa URL. La fel ca toate metodele HTTP, suportul depinde de server. Poate permite oricui să șteargă o resursă, deși acest lucru ar fi în mod clar riscant. Un server care acceptă DELETE va necesita de obicei autentificare și autorizare.

Alte două metode oferă mici variații față de cele de mai sus: PLASTURE și CAP. S-ar putea să le găsiți utile atunci când utilizați anumite API-uri sau dacă vă construiți propria.

PLASTURE

Metoda PATCH actualizează o resursă existentă, cu date doar parțiale. Cu alte cuvinte, nu trebuie să furnizați reprezentarea completă a noii resurse, ci doar câmpurile pe care trebuie să le actualizați.

CAP

O solicitare HEAD este pentru atunci când doriți informații despre o resursă, dar nu despre resursa în sine. Răspunsul nu va include un corp, dar va conține un set de anteturi HTTP utile. Puteți afla dimensiunea totală a unui fișier înainte de a-l descărca, prin antetul răspunsului Content-Length.

Celelalte metode -OPȚIUNI, CONECTAȚI, și URMĂ— sunt mai obscure. Aceștia se ocupă de metadate, rețele și depanare. S-ar putea să le găsiți utile în anumite tipuri de programare, dar probabil că nu le veți folosi în fiecare zi.

OPȚIUNI

Un server ar trebui să răspundă la această metodă spunându-vă ce metode HTTP suportă de fapt resursa. Acest lucru poate fi util pentru descoperire.

CONECTAȚI

Anumite tipuri de software de rețea pot folosi această metodă pentru a stabili un tunel între două computere. Acesta este adesea folosit pentru a iniția o conexiune HTTPS prin intermediul unui proxy.

URMĂ

Această metodă este utilă pentru depanare. La primirea acestuia, serverul ar trebui să trimită înapoi cererea primită în corpul răspunsului. Metoda oferă un mecanism pentru a verifica dacă mașinile intermediare au modificat orice detalii ale cererii.

GET și HEAD sunt singurele două metode pe care le acceptă fiecare server web general. Un anumit server poate accepta sau nu alte metode, așa că ar trebui să verificați mai întâi.

Când ați putea folosi aceste metode?

De cele mai multe ori, metodele HTTP vor fi transparente pentru tine. Cu toate acestea, va trebui să le luați în considerare dacă adăugați un formular pe o pagină web sau utilizați un API.

Metode HTTP în HTML

The formă elementelor metodă Atributul vă permite să setați metoda HTTP pe care să o utilizați atunci când se trimite formularul. HTML acceptă numai post și obține valori pentru acest atribut — plus o alternativă de dialog obscure.

<formămetodă="post">
...
formă>

Puteți utiliza funcții precum Instrumentele pentru dezvoltatori Chrome A vedea Reţea trafic și confirmați metoda pe care o trimite browserul dvs. pentru o anumită solicitare. Rețineți că majoritatea formularelor web vor trimite un POST, deoarece de obicei actualizează datele de pe server. Cu toate acestea, multe formulare de căutare folosesc GET, deoarece pur și simplu preiau date fără a le modifica.

Deoarece datele POST nu fac parte din URL, sunt mai private decât dacă le trimiteți printr-un GET. Datele mai există în corpul cererii unde, teoretic, un atacator le poate intercepta. Dar trimiterea datelor prin HTTPS ar trebui să atenueze această problemă.

Nu ar trebui să implementați niciodată un utilizator de conectare cu solicitări GET. Chiar dacă autentificarea poate părea mai mult ca o operațiune de citire decât o creare sau actualizare, totuși trebuie să utilizați POST pentru a securiza datele.

Deoarece formularele HTML acceptă doar GET și POST, nu puteți crea direct un formular care, de exemplu, șterge o resursă de pe server. O soluție obișnuită, care respectă principiile REST pe server, este să folosiți o variabilă substituentă și să pretindeți că a fost metoda HTTP originală. De exemplu:

<formămetodă="post">
<intraretip="ascuns"Nume="_metodă"valoare="ȘTERGE" />
...
formă>

Codul dvs. de pe partea serverului poate verifica prezența acestei variabile „metode proxy” și o poate trata ca și cum ar fi metoda reală utilizată. De exemplu, în PHP:

$metoda = $_SERVER[„REQUEST_METHOD”];

dacă (array_key_exists("_metodă", $_REQUEST)) {
$metoda = $_CERERE["_metodă"];
}

Trimiterea cererilor HTTP în mod programatic

API-ul Web Fetch oferă o funcție JavaScript fetch() pe care o puteți utiliza pentru a trimite o solicitare HTTP. Acceptă întreaga gamă de metode, nu doar GET și POST pe care le acceptă HTML.

Funcția de preluare va trimite implicit o solicitare GET. Pentru a utiliza o metodă diferită, specificați numele acesteia ca valoare pentru a metodă proprietate într-un obiect pe care îl trimiteți ca al doilea argument.

aduce(' https://example.com/', { metodă: "CAP" });

De asemenea, puteți trimite solicitări HTTP din multe limbi de pe partea serverului, inclusiv PHP. În această limbă, biblioteca curl este o modalitate obișnuită de a trimite astfel de solicitări.

Biblioteca curl are o opțiune CURLOPT_CUSTOMREQUEST pe care o puteți seta pentru a specifica o metodă

dacă ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'A PUNE');
curl_exec($ch);
// ...
}

Prin linia de comandă

Instrumentul de linie de comandă curl vă permite să transferați date către sau de la un server, prin intermediul unuia dintre mai multe protocoale. HTTP (și HTTPS) sunt două cazuri de utilizare foarte frecvente.

În mod implicit, curl trimite o solicitare GET, așa cum puteți confirma cu următoarea comandă:

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

Puteți vedea metoda de solicitare pe a cincea linie a rezultatului:

Puteți schimba metoda de solicitare pe care curl o trimite folosind steag-ul -X:

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

Acum, curl trimite o solicitare folosind metoda POST:

HTTP are multe utilizări

Majoritatea a ceea ce faceți pe web va implica solicitări GET standard, cu POST ocazional pentru trimiterea formularelor. Dar HTTP este un protocol mult mai expresiv decât sugerează acest lucru.

Unele dintre cele mai comune metode oglindesc modelul CRUD, ceea ce face din HTTP o bază excelentă pe care să construiți un API centrat pe resurse.