Metody HTTP požadavků vysvětleny
HTTP definuje devět standardních metod požadavků, ale většina běžného provozu využívá jen některé. Tato tabulka vysvětluje každou metodu, zda je bezpečná a idempotentní, a jaké kódy vrací úspěšné volání.
| Metoda | Účel | Bezpečná? | Idempotentní? | Úspěšný stav |
|---|---|---|---|---|
| GET | Retrieve a resource | Yes | Yes | 200 OK |
| HEAD | Retrieve headers only, no body | Yes | Yes | 200 OK |
| POST | Create a resource or trigger an action | No | No | 201 Created |
| PUT | Replace a resource entirely | No | Yes | 200 OK / 204 No Content |
| PATCH | Apply a partial update | No | No | 200 OK |
| DELETE | Remove a resource | No | Yes | 200 OK / 204 No Content |
| OPTIONS | CORS preflight; list allowed methods | Yes | Yes | 204 / 200 OK |
| TRACE | Echo the request back for diagnostics | Yes | Yes | 200 OK |
| CONNECT | Open a tunnel, e.g. HTTPS via a proxy | No | No | 200 OK |
Poznámky
- Bezpečná znamená, že metoda nikdy nemění stav serveru: jediné bezpečné metody jsou GET, HEAD, OPTIONS a TRACE.
- Idempotentní znamená, že opakování volání dá stejný výsledek jako jediné volání: platí pro PUT, DELETE a GET, ne pro POST a PATCH.
- Když cesta metodu nepřijímá, server odpoví 405 Method Not Allowed a obvykle přidá hlavičku Allow.
Časté dotazy
- Jaký je rozdíl mezi GET a POST?
- GET získává prostředek bez vedlejších účinků a lze jej bezpečně opakovat; parametry putují v URL. POST něco vytváří nebo spouští akci, může měnit stav a neměl by se bezhlavě opakovat.
- Co znamená, že je metoda HTTP bezpečná?
- Bezpečná metoda nikdy nemění stav serveru, takže ji lze volat bez rizika. Bezpečné jsou GET, HEAD, OPTIONS a TRACE; POST, PUT, PATCH a DELETE ne.
- Jaký je rozdíl mezi PUT a PATCH?
- PUT nahrazuje celý prostředek tím, co odešlete; PATCH provádí částečnou změnu jen vybraných polí. PUT je idempotentní, opakování dává stejný výsledek; PATCH obvykle ne.
- K čemu slouží metoda HEAD?
- HEAD se chová jako GET, ale nevrací tělo odpovědi. Hodí se ke kontrole existence prostředku, jeho velikosti nebo hlaviček, aniž byste stahovali celý obsah.