Možná jste slyšeli o požadavcích GET a POST, ale to je jen začátek.

Každý požadavek HTTP používá metodu k popisu svého základního účelu. Každá metoda má specifické použití pro úkoly od načtení webové stránky po odstranění zdroje. GET a POST jsou dva nejznámější, ale existuje sedm dalších.

Přečtěte si o tomto konceptu a o tom, k čemu slouží každá z devíti možných metod HTTP.

Co je metoda HTTP?

Každý požadavek HTTP obsahuje akci a cíl pro tuto akci, podobně jako sloveso a podstatné jméno, které funguje jako objekt.

Adresa URL identifikuje jedinečný zdroj, který funguje jako cíl požadavku. Mezitím sloveso – jakou akci provést na této adrese URL – představuje metoda.

První řádek požadavku HTTP poskytuje nejdůležitější informace včetně verze HTTP, adresy URL zdroje a metody požadavku:

ZÍSKEJTE /software/htp/cics/index.html HTTP/1.1

Co je 9 metod HTTP?

První čtyři metody jsou ekvivalenty čtyř akcí z modelu CRUD: Create, Read, Update a Delete. Příslušné metody HTTP jsou POŠTA, DOSTAT, DÁT, a VYMAZAT.

DOSTAT

Nejběžnější výchozí požadavek, který odešlete při procházení webu a klikání na odkazy nebo vyžádání dat prostřednictvím rozhraní API. Server by měl vrátit prostředek ve svém těle odpovědi.

POŠTA

Pomocí POST vytvořte nové prostředky, zejména pokud tyto prostředky mají identifikovatelný nadřazený prostředek. Pokud máte například zdroj /clients, měli byste vytvořit nového klienta odesláním požadovaných dat do /clients.

DÁT

Aktualizujte nebo nahraďte existující zdroj. Je to podobné jako POST, ale klient je zodpovědný za výběr jedinečného identifikátoru zdroje. Chcete-li vytvořit zdroj pomocí PUT, adresa URL zdroje by měla obsahovat identifikátor, např. /clients/007.

VYMAZAT

Tuto metodu použijte k odstranění prostředku, který zadáte v adrese URL. Stejně jako všechny metody HTTP je podpora závislá na serveru. Může umožnit komukoli smazat zdroj, i když by to bylo zjevně riskantní. Server, který podporuje DELETE, bude obvykle vyžadovat autentizace a autorizace.

Dvě další metody poskytují mírné odchylky od výše uvedeného: NÁPLAST a HLAVA. Mohou se vám hodit při používání určitých rozhraní API nebo při vytváření vlastních.

NÁPLAST

Metoda PATCH aktualizuje existující zdroj pouze s částečnými daty. Jinými slovy, nemusíte dodávat úplnou reprezentaci nového zdroje, pouze pole, která potřebujete aktualizovat.

HLAVA

Požadavek HEAD se používá, když chcete informace o zdroji, ale ne o zdroji samotném. Odpověď nebude obsahovat tělo, ale bude obsahovat sadu užitečných HTTP hlaviček. Celkovou velikost souboru můžete zjistit před jeho stažením prostřednictvím záhlaví odpovědi Content-Length.

Zbývající metody -MOŽNOSTI, PŘIPOJIT, a STOPA– jsou nejasnější. Zabývají se metadaty, sítí a řešením problémů. Možná se vám budou hodit v určitých typech programování, ale pravděpodobně je nebudete používat každý den.

MOŽNOSTI

Server by měl na tuto metodu odpovědět tak, že vám sdělí, které metody HTTP daný prostředek skutečně podporuje. To může být užitečné pro objevování.

PŘIPOJIT

Některé typy síťového softwaru mohou tuto metodu používat k vytvoření tunelu mezi dvěma počítači. To se často používá k zahájení připojení HTTPS přes proxy.

STOPA

Tato metoda je užitečná při odstraňování problémů. Po přijetí by měl server odeslat zpět požadavek, který obdržel v těle odpovědi. Metoda poskytuje mechanismus pro kontrolu, zda zprostředkující stroje změnily nějaké podrobnosti požadavku.

GET a HEAD jsou jediné dvě metody, které podporuje každý obecný webový server. Konkrétní server může nebo nemusí podporovat jiné metody, takže byste měli nejprve zkontrolovat.

Kdy můžete použít tyto metody?

Většinu času pro vás budou metody HTTP transparentní. Budete je však muset vzít v úvahu, pokud přidáte formulář na webovou stránku nebo použijete rozhraní API.

HTTP metody v HTML

The formulář Prvky metoda atribut umožňuje nastavit metodu HTTP, která se použije při odeslání formuláře. HTML podporuje pouze pošta a dostat hodnoty pro tento atribut – plus nejasná alternativa dialogu.

<formulářmetoda="pošta">
...
formulář>

Můžete použít funkce jako Vývojářské nástroje Chrome zobrazit Síť provoz a potvrďte metodu, kterou váš prohlížeč odesílá pro konkrétní požadavek. Všimněte si, že většina webových formulářů odešle POST, protože obvykle aktualizují data na serveru. Mnoho vyhledávacích formulářů však používá GET, protože jednoduše načítají data, aniž by je měnili.

Protože data POST nejsou součástí adresy URL, jsou soukromější, než když je posíláte prostřednictvím GET. Data stále existují v těle požadavku, kde je teoreticky může zachytit útočník. Ale odesílání dat přes HTTPS by mělo tento problém zmírnit.

Nikdy byste neměli implementovat přihlášení uživatele s požadavky GET. I když se přihlášení může zdát spíše jako operace čtení než vytvoření nebo aktualizace, stále musíte k zabezpečení dat použít POST.

Protože formuláře HTML podporují pouze GET a POST, nemůžete přímo vytvořit formulář, který například odstraní zdroj na serveru. Běžným řešením, které respektuje principy REST na serveru, je použít zástupnou proměnnou a předstírat, že to byla původní metoda HTTP. Například:

<formulářmetoda="pošta">
<vstuptyp="skrytý"název="_metoda"hodnota="VYMAZAT" />
...
formulář>

Váš kód na straně serveru může zkontrolovat přítomnost této proměnné „metody proxy“ a zacházet s ní, jako by se jednalo o skutečnou použitou metodu. Například v PHP:

$method = $_SERVER["REQUEST_METHOD"];

-li (pole_key_exists("_metoda", $_REQUEST)) {
$method = $_REQUEST["_metoda"];
}

Programové odesílání požadavků HTTP

Web Fetch API poskytuje funkci fetch() JavaScript, kterou můžete použít k odeslání požadavku HTTP. Podporuje celou řadu metod, nejen GET a POST, které HTML podporuje.

Funkce načítání standardně odešle požadavek GET. Chcete-li použít jinou metodu, zadejte její název jako hodnotu pro a metoda vlastnost v objektu, který odešlete jako druhý argument.

vynést(' https://example.com/', { metoda: "HLAVA" });

Můžete také odesílat požadavky HTTP z mnoha jazyků na straně serveru, včetně PHP. V tomto jazyce je knihovna curl běžným způsobem odesílání takových požadavků.

Knihovna curl má volbu CURLOPT_CUSTOMREQUEST, kterou můžete nastavit pro určení metody

-li ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DÁT');
curl_exec($ch);
// ...
}

Prostřednictvím příkazového řádku

Nástroj příkazového řádku curl umožňuje přenášet data na nebo ze serveru prostřednictvím jednoho z několika protokolů. HTTP (a HTTPS) jsou dva velmi běžné případy použití.

Ve výchozím nastavení curl odesílá požadavek GET, což můžete potvrdit následujícím příkazem:

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

Metodu požadavku můžete vidět na pátém řádku výstupu:

Metodu požadavku, který curl odesílá, můžete změnit pomocí parametru -X:

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

Nyní curl odešle požadavek pomocí metody POST:

HTTP má mnoho využití

Většina toho, co děláte na webu, bude zahrnovat standardní požadavky GET s občasným POST pro odeslání formuláře. Ale HTTP je mnohem expresivnější protokol, než to naznačuje.

Některé z nejběžnějších metod odrážejí model CRUD, díky kterému je HTTP vynikající základ, na kterém lze stavět API zaměřené na zdroje.