Možno ste už počuli o žiadostiach GET a POST, ale to je len začiatok.
Každá požiadavka HTTP používa metódu na opísanie svojho základného účelu. Každá metóda má špecifické využitie pre úlohy od načítania webovej stránky až po vymazanie zdroja. GET a POST sú dve najznámejšie, ale existuje sedem ďalších.
Prečítajte si o tomto koncepte a o tom, na čo slúži každá z deviatich možných metód HTTP.
Čo je to metóda HTTP?
Každá požiadavka HTTP obsahuje akciu a cieľ pre túto akciu, podobne ako sloveso a podstatné meno, ktoré funguje ako objekt.
Adresa URL identifikuje jedinečný zdroj, ktorý pôsobí ako cieľ požiadavky. Medzitým sloveso – akú akciu vykonať na tejto adrese URL – predstavuje metóda.
Prvý riadok požiadavky HTTP poskytuje najdôležitejšie informácie vrátane verzie HTTP, adresy URL zdroja a metódy požiadavky:
ZÍSKAJTE /software/htp/cics/index.html HTTP/1.1
Čo je 9 metód HTTP?
Prvé štyri metódy sú ekvivalentom štyroch akcií z modelu CRUD: Create, Read, Update a Delete. Príslušné metódy HTTP sú POST, GET, PUT, a VYMAZAŤ.
GET
Najbežnejšia predvolená požiadavka, ktorú odošlete pri prehliadaní webu a klikaní na odkazy alebo pri vyžiadaní údajov prostredníctvom rozhrania API. Server by mal vrátiť zdroj vo svojom tele odpovede.
POST
Použite POST na vytvorenie nových zdrojov, najmä ak tieto zdroje majú identifikovateľný nadradený zdroj. Napríklad, ak máte zdroj /clients, mali by ste vytvoriť nového klienta odoslaním požadovaných údajov do /clients.
PUT
Aktualizujte alebo nahraďte existujúci zdroj. Je to podobné ako POST, ale klient je zodpovedný za výber jedinečného identifikátora pre zdroj. Ak chcete vytvoriť zdroj pomocou PUT, adresa URL zdroja by mala obsahovať identifikátor, napr. /clients/007.
VYMAZAŤ
Túto metódu použite na odstránenie prostriedku, ktorý zadáte v adrese URL. Rovnako ako všetky metódy HTTP, podpora závisí od servera. Môže to umožniť komukoľvek odstrániť zdroj, hoci by to bolo zjavne riskantné. Server, ktorý podporuje DELETE, bude zvyčajne vyžadovať autentifikáciu a autorizáciu.
Dve ďalšie metódy poskytujú mierne odchýlky od vyššie uvedeného: ZÁPLATA a HLAVA. Môžu sa vám hodiť pri používaní určitých rozhraní API alebo pri vytváraní vlastných.
ZÁPLATA
Metóda PATCH aktualizuje existujúci zdroj iba s čiastočnými údajmi. Inými slovami, nemusíte poskytnúť úplné zastúpenie nového zdroja, iba polia, ktoré potrebujete aktualizovať.
HLAVA
Požiadavka HEAD je určená vtedy, keď chcete informácie o zdroji, ale nie o zdroji samotnom. Odpoveď nebude obsahovať telo, ale bude obsahovať sadu užitočných hlavičiek HTTP. Celkovú veľkosť súboru môžete zistiť pred jeho stiahnutím prostredníctvom hlavičky odpovede Content-Length.
Zostávajúce metódy -MOŽNOSTI, PRIPOJIŤ, a TRACE- sú nejasnejšie. Zaoberajú sa metadátami, sieťovaním a riešením problémov. Možno sa vám budú hodiť pri určitých typoch programovania, no pravdepodobne ich nebudete používať každý deň.
MOŽNOSTI
Server by mal na túto metódu odpovedať tak, že vám povie, ktoré metódy HTTP daný zdroj skutočne podporuje. To môže byť užitočné pri objavovaní.
PRIPOJIŤ
Určité typy sieťového softvéru môžu použiť túto metódu na vytvorenie tunela medzi dvoma počítačmi. Toto sa často používa na spustenie pripojenia HTTPS cez proxy.
TRACE
Táto metóda je užitočná pri riešení problémov. Po prijatí by mal server poslať späť požiadavku, ktorú dostal v tele odpovede. Metóda poskytuje mechanizmus na kontrolu, či sprostredkujúce stroje zmenili nejaké detaily požiadavky.
GET a HEAD sú jediné dve metódy, ktoré podporuje každý všeobecný webový server. Konkrétny server môže, ale nemusí podporovať iné metódy, takže by ste to mali najskôr skontrolovať.
Kedy môžete použiť tieto metódy?
Metódy HTTP budú pre vás väčšinou transparentné. Budete ich však musieť zvážiť, ak pridáte formulár na webovú stránku alebo použijete rozhranie API.
Metódy HTTP v HTML
The formulár prvku metóda atribút vám umožňuje nastaviť metódu HTTP, ktorá sa použije pri odoslaní formulára. HTML podporuje iba príspevok a dostať hodnoty pre tento atribút – plus nejasná alternatíva dialógu.
<formulármetóda="post">
...
formulár>
Môžete použiť funkcie ako napr Vývojárske nástroje prehliadača Chrome zobraziť sieť návštevnosť a potvrďte metódu, ktorú váš prehliadač odošle pre konkrétnu požiadavku. Upozorňujeme, že väčšina webových formulárov odošle POST, pretože zvyčajne aktualizujú údaje na serveri. Mnoho vyhľadávacích formulárov však používa GET, pretože jednoducho načítajú údaje bez toho, aby ich zmenili.
Keďže údaje POST nie sú súčasťou adresy URL, sú dôvernejšie, ako keby ste ich odosielali cez GET. Údaje stále existujú v tele žiadosti, kde ich teoreticky môže zachytiť útočník. Ale odosielanie údajov cez HTTPS by malo tento problém zmierniť.
Nikdy by ste nemali implementovať prihlásenie používateľa s požiadavkami GET. Aj keď sa prihlásenie môže zdať skôr ako operácia čítania než vytvorenie alebo aktualizácia, stále musíte na zabezpečenie údajov použiť POST.
Keďže formuláre HTML podporujú iba GET a POST, nemôžete priamo vytvoriť formulár, ktorý napríklad odstráni zdroj na serveri. Bežným riešením, ktoré rešpektuje princípy REST na serveri, je použiť zástupnú premennú a predstierať, že to bola pôvodná metóda HTTP. Napríklad:
<formulármetóda="post">
<vstuptypu="skrytý"názov="_method"hodnotu="DELETE" />
...
formulár>
Váš kód na strane servera môže skontrolovať prítomnosť tejto premennej „metódy proxy“ a zaobchádzať s ňou, ako keby to bola skutočná použitá metóda. Napríklad v PHP:
$method = $_SERVER["REQUEST_METHOD"];
ak (pole_key_exists("_method", $_REQUEST)) {
$method = $_REQUEST["_method"];
}
Programové odosielanie požiadaviek HTTP
Web Fetch API poskytuje funkciu fetch() JavaScript, ktorú môžete použiť na odoslanie požiadavky HTTP. Podporuje celý rad metód, nielen GET a POST, ktoré HTML podporuje.
Funkcia načítania štandardne odošle požiadavku GET. Ak chcete použiť inú metódu, zadajte jej názov ako hodnotu pre a metóda vlastnosť v objekte, ktorý pošlete ako druhý argument.
priniesť (' https://example.com/', { metóda: "HLAVA" });
Môžete tiež odosielať požiadavky HTTP z mnohých jazykov na strane servera vrátane PHP. V tomto jazyku je knižnica curl bežným spôsobom odosielania takýchto požiadaviek.
Knižnica curl má možnosť CURLOPT_CUSTOMREQUEST, ktorú môžete nastaviť na určenie metódy
ak ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_exec($ch);
// ...
}
Cez príkazový riadok
Nástroj príkazového riadku curl umožňuje prenášať údaje na server alebo zo servera prostredníctvom jedného z niekoľkých protokolov. HTTP (a HTTPS) sú dva veľmi bežné prípady použitia.
V predvolenom nastavení curl odosiela požiadavku GET, čo môžete potvrdiť nasledujúcim príkazom:
curl -v -s -o /dev/null example.com/get-test
Metódu požiadavky môžete vidieť na piatom riadku výstupu:
Metódu požiadavky, ktorú curl odosiela, môžete zmeniť pomocou príznaku -X:
curl -v -s -o /dev/null example.com/get-test -X POST
Teraz curl odošle požiadavku pomocou metódy POST:
HTTP má mnoho využití
Väčšina toho, čo robíte na webe, bude zahŕňať štandardné požiadavky GET s občasným POST na odoslanie formulárov. Ale HTTP je oveľa výraznejší protokol, ako to naznačuje.
Niektoré z najbežnejších metód odzrkadľujú model CRUD, vďaka čomu je HTTP vynikajúcim základom na vybudovanie API zameraného na zdroje.