POST

Metoda HTTP

Specifikace metody HTTP POST

Metoda POST požaduje, aby cílový prostředek zpracoval reprezentaci obsaženou v požadavku podle vlastní specifické sémantiky prostředku. POST se používá například pro následující funkce (mimo jiné):

  • Předání bloku dat, například polí zadaných do formuláře HTML, procesu zpracování dat;
  • Vyslání zprávy na nástěnku, diskusní skupinu, poštovní seznam, blog nebo podobnou skupinu článků;
  • Vytvoření nového prostředku, který musí být ještě identifikován původním serverem, a
  • Přidání dat do existující reprezentace (reprezentací) prostředku.

Server původu označuje sémantiku odpovědi výběrem vhodného stavového kódu v závislosti na výsledku zpracování požadavku POST; v odpovědi na POST mohou být přijaty téměř všechny stavové kódy definované touto specifikací (výjimky jsou 206 (částečný obsah), 304 (nezměněno) a 416 (rozsah nelze splnit)).

Pokud byl na původním serveru v důsledku úspěšného zpracování požadavku POST vytvořen jeden nebo více prostředků, původní server MUSÍ odeslat odpověď 201 (Vytvořeno) obsahující pole hlavičky Location, které poskytuje identifikátor vytvořeného primárního prostředku (oddíl 7.).1.2) a reprezentaci, která popisuje stav požadavku a zároveň odkazuje na nový(é) prostředek(y).

Odpovědi na požadavky POST lze ukládat do mezipaměti pouze tehdy, pokud obsahují explicitní informaci o čerstvosti (viz oddíl 4.2.1 [RFC7234]). Ukládání do mezipaměti POST však není široce implementováno. Pro případy, kdy si server původu přeje, aby klient mohl uložit do mezipaměti výsledek POST tak, aby mohl být znovu použit pozdějším GET, server původu MŮŽE odeslat odpověď 200 (OK) obsahující výsledek a pole hlavičky Content-Location, které má stejnou hodnotu jako efektivní URI požadavku POST (oddíl 3.1.4.2).

Pokud by výsledek zpracování POST odpovídal reprezentaci existujícího prostředku, origin server MŮŽE přesměrovat agenta uživatele na tento prostředek zasláním odpovědi 303 (Viz ostatní) s identifikátorem existujícího prostředku v poli Location. Výhodou tohoto postupu je poskytnutí identifikátoru prostředku agentovi uživatele a přenos reprezentace metodou, která je vhodnější pro sdílené ukládání do mezipaměti, i když za cenu dalšího požadavku, pokud agent uživatele ještě nemá reprezentaci uloženou v mezipaměti.

Metoda HTTP POST byla specifikována v části 4.3.3 dokumentu RFC 7231 organizací IETF (Internet Engineering Task Force) a konsorciem W3C (World Wide Web Consortium).

Popis metody POST

probíhající práce

Příklad pro metodu HTTP POST

Request header:
POST /data HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537
Accept: application/json
Accept-Language: de-DE,de;q=0.5
Content-Type: application/json
Content-Length: 100
Connection: keep-alive
Request body:
{
  "key": "value",
  "foo": "bar"
}
Response header:
Content-Type: application/json
Date: Mon, 31 July 2023 14:58:12 GMT
Server: Apache/2.4.7 (Ubuntu)
Cache-Control: no-cache
Location: http://api.example.com/data/123
Response body:
{
  "status": "success",
  "id": 123
}