Przewodnik po metodach HTTP
Poznaj wszystkie metody HTTP: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS. Różnice, zastosowania, idempotentność. Dla programistów. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćPrzewodnik po metodach HTTP – kompletny opis GET, POST, PUT, DELETE
Metody HTTP (HTTP verbs) definiują akcję jaką klient chce wykonać na zasobie serwera. Prawidłowe użycie metod HTTP jest podstawą projektowania REST API. Przewodnik omawia wszystkie metody: semantykę, idempotentność, bezpieczeństwo i praktyczne zastosowania.
Podstawowe metody HTTP
GET: pobierz zasób. Bezpieczna, idempotentna, brak body. POST: utwórz zasób lub wyślij dane. Nie jest idempotentna. PUT: zastąp zasób całkowicie. Idempotentna. PATCH: modyfikuj częściowo. DELETE: usuń zasób. Idempotentna (wielokrotne DELETE = ten sam efekt). HEAD: jak GET ale bez body (sprawdź nagłówki). OPTIONS: jakie metody obsługuje endpoint.
Bezpieczeństwo i idempotentność
Bezpieczna metoda: nie zmienia stanu serwera (GET, HEAD, OPTIONS). Idempotentna: wielokrotne żądanie = ten sam efekt (GET, PUT, DELETE, HEAD). POST: NIE jest idempotentna (wielokrotne = wielokrotne rekordy). PATCH: może być idempotentna zależy od implementacji. Praktyczne znaczenie: retry logic. Jeśli GET/PUT/DELETE timeout → bezpieczne ponowienie. POST → może zduplikować dane.
PUT vs PATCH
PUT: zastąp cały zasób. Musisz wysłać kompletną reprezentację. PUT /users/1 z {name:"Jan", email:"[email protected]"} → zastępuje wszystkie pola. PATCH: modyfikuj wybrane pola. PATCH /users/1 z {email:"[email protected]"} → zmienia tylko email. RFC 5789 definiuje PATCH. JSON Patch (RFC 6902): operacje add/remove/replace/move. JSON Merge Patch (RFC 7396): prostszy format.
Kody odpowiedzi HTTP dla metod
GET 200 OK (znaleziono), 404 Not Found. POST 201 Created (z nagłówkiem Location), 400 Bad Request. PUT 200 OK lub 204 No Content. PATCH 200 OK. DELETE 204 No Content (sukces bez body), 404 jeśli nie istnieje. OPTIONS 200 z nagłówkiem Allow: GET, POST, PUT, DELETE. HEAD: jak GET ale ciało odpowiedzi puste.
Najczęstsze pytania
Jaka jest różnica między POST a PUT?
POST: tworzy zasób, URL zasobu generowany przez serwer. POST /api/users → serwer decyduje o ID. PUT: zastępuje zasób pod konkretnym URL. PUT /api/users/123 → klient zna docelowy URL. POST nie jest idempotentny (dwa POST = dwa rekordy). PUT jest idempotentny (dwa PUT = jeden zasób). W REST API: POST dla create, PUT dla update/replace.
Kiedy używać PATCH zamiast PUT?
PATCH gdy chcesz zmienić tylko jedno/kilka pól i nie chcesz wysyłać całego obiektu. PUT jest lepszy gdy chcesz zastąpić zasób kompletnie. Przykład: user ma 20 pól. Zmiana emaila: PATCH /users/1 {email: "[email protected]"} (wysyłasz 1 pole). PUT wymagałoby wszystkich 20 pól. PATCH oszczędza bandwidth. Caveat: PATCH wymaga ostrożnej implementacji (partial update logic).
Dlaczego formularz HTML obsługuje tylko GET i POST?
Specyfikacja HTML4/5 (form method): tylko GET i POST. Historia: HTML starszy niż REST. Obejścia: method overriding (PUT/DELETE w ukrytym polu), AJAX (fetch/XHR może używać wszystkich metod). Framework: Laravel: @method('PUT') w formularzu. Django: podobne metody. W nowoczesnych aplikacjach SPA (React, Vue): AJAX + wszystkie metody HTTP.
Co to są idempotentne żądania i dlaczego ważne?
Idempotentność: f(f(x)) = f(x). Wielokrotne wywołanie daje ten sam wynik. Znaczenie praktyczne: retry on timeout. DELETE /orders/1: jeśli timeout → ponów → bezpieczne (404 jeśli już usunięte). POST /orders: jeśli timeout → NIEBEZPIECZNE ponowienie (zduplikowany order). Rozwiązanie dla POST: Idempotency-Key header (Stripe API). UUID w body żądania.
Jak testować metody HTTP w praktyce?
curl: curl -X GET https://api.example.com/users. curl -X POST -H "Content-Type: application/json" -d '{"name":"Jan"}' https://api.example.com/users. Postman: GUI dla HTTP requests. HTTPie: http POST api.example.com/users name=Jan. Thunder Client (VS Code extension). Insomnia. Dev Tools Network tab: sprawdź metody rzeczywistych żądań. Hoppscotch (open-source Postman alternative).
Powiązane narzedzia: tester API REST, analizator nagłówków HTTP i generator URL API.