Metody żądań HTTP — wyjaśnienie
HTTP definiuje dziewięć standardowych metod żądań, ale większość codziennego ruchu używa tylko kilku. Ta tabela wyjaśnia każdą metodę, czy jest bezpieczna i idempotentna oraz jakie kody zwraca udane wywołanie.
| Metoda | Przeznaczenie | Bezpieczna? | Idempotentna? | Status sukcesu |
|---|---|---|---|---|
| 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 |
Uwagi
- Bezpieczna oznacza, że metoda nigdy nie zmienia stanu serwera: tylko GET, HEAD, OPTIONS i TRACE są bezpieczne.
- Idempotentna oznacza, że powtórzenie wywołania daje ten sam wynik co jedno wywołanie: dotyczy to PUT, DELETE i GET, ale nie POST i PATCH.
- Gdy trasa nie akceptuje metody, serwer odpowiada 405 Method Not Allowed i zwykle dołącza nagłówek Allow.
Częste pytania
- Jaka jest różnica między GET i POST?
- GET pobiera zasób bez skutków ubocznych i można go bezpiecznie powtarzać; parametry są w URL. POST tworzy coś lub wyzwala akcję, może zmieniać stan i nie należy go bezmyślnie powtarzać.
- Co oznacza, że metoda HTTP jest bezpieczna?
- Metoda bezpieczna nigdy nie zmienia stanu serwera, więc można ją wywoływać bez ryzyka. GET, HEAD, OPTIONS i TRACE są bezpieczne; POST, PUT, PATCH i DELETE nie.
- Jaka jest różnica między PUT i PATCH?
- PUT zastępuje cały zasób tym, co wysyłasz; PATCH wprowadza częściową zmianę tylko w wybranych polach. PUT jest idempotentna, powtórzenie daje ten sam wynik; PATCH zwykle nie jest.
- Do czego służy metoda HEAD?
- HEAD działa jak GET, ale nie zwraca treści odpowiedzi. Służy do sprawdzania, czy zasób istnieje, jego rozmiaru lub nagłówków, bez pobierania całej zawartości.