POST
Metóda HTTP
Špecifikácia metódy HTTP POST
Metóda POST požaduje, aby cieľový prostriedok spracoval reprezentáciu obsiahnutú v požiadavke podľa vlastnej špecifickej sémantiky prostriedku. POST sa používa napríklad na tieto funkcie (okrem iných):
- Poskytnutie bloku údajov, ako sú napríklad polia zadané do formulára HTML, procesu spracovania údajov;
- Poslanie správy na nástenku, diskusnú skupinu, poštovú konferenciu, blog alebo podobnú skupinu článkov;
- Vytvorenie nového prostriedku, ktorý musí byť ešte identifikovaný pôvodným serverom, a
- Pridanie údajov do existujúcej reprezentácie (reprezentácií) prostriedku.
Server pôvodu označuje sémantiku odpovede výberom vhodného stavového kódu v závislosti od výsledku spracovania požiadavky POST; takmer všetky stavové kódy definované v tejto špecifikácii môžu byť prijaté v odpovedi na POST (výnimky sú 206 (čiastočný obsah), 304 (nezmenený) a 416 (rozsah nie je splniteľný)).
Ak bol na pôvodnom serveri vytvorený jeden alebo viac zdrojov v dôsledku úspešného spracovania požiadavky POST, pôvodný server POVINNE odošle odpoveď 201 (Created) obsahujúcu pole hlavičky Location (Umiestnenie), ktoré poskytuje identifikátor vytvoreného primárneho zdroja (časť 7.1.2) a reprezentáciu, ktorá opisuje stav požiadavky a zároveň odkazuje na nový(-é) prostriedok(-ky).
Odpovede na požiadavky POST je možné ukladať do vyrovnávacej pamäte len vtedy, ak obsahujú explicitnú informáciu o čerstvosti (pozri časť 4.2.1 dokumentu [RFC7234]). Ukladanie do vyrovnávacej pamäte POST však nie je široko implementované. V prípadoch, keď si pôvodný server želá, aby klient mohol uložiť výsledok POST do vyrovnávacej pamäte tak, aby sa dal opätovne použiť pri neskoršom GET, pôvodný server MÔŽE poslať odpoveď 200 (OK) obsahujúcu výsledok a pole hlavičky Content-Location, ktoré má rovnakú hodnotu ako účinný URI požiadavky POST (časť 3.1.4.2).
Ak by výsledok spracovania POST zodpovedal reprezentácii existujúceho prostriedku, origin server MÔŽE presmerovať používateľského agenta na tento prostriedok zaslaním odpovede 303 (Pozri iné) s identifikátorom existujúceho prostriedku v poli Location (Umiestnenie). Výhodou tohto postupu je poskytnutie identifikátora prostriedku agentovi používateľa a prenos reprezentácie prostredníctvom metódy, ktorá je vhodnejšia na zdieľané ukladanie do medzipamäte, hoci za cenu dodatočnej požiadavky, ak agent používateľa ešte nemá reprezentáciu uloženú v medzipamäti.
Opis metódy POST
Príklad pre metódu HTTP POST
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"
}
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
}