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";
}
Ściąga metod HTTP
======================
Uwagi: „Bezpieczna” oznacza, że metoda nie powinna zmieniać stanu serwera. „Idempotentna” oznacza, że powtórzenie tego samego żądania powinno prowadzić do tego samego stanu końcowego.
GET — Pobiera reprezentację zasobu.
Bezpieczna: Tak | Idempotentna: Tak | Cache'owalna: Tak
Treść żądania: Nietypowe (zwykle ignorowane).
Typowe statusy: 200 OK, 304 Not Modified, 404 Not Found
Kiedy używać: Użyj GET do odczytu danych bez zmiany stanu serwera. Preferuj parametry zapytania do filtrowania i paginacji.
Uwagi: GET jest domyślną metodą do odczytów i najlepiej współpracuje z pamięcią podręczną oraz narzędziami przeglądarki.
Przykład: curl -i "https://api.example.com/v1/users?limit=20"
----------------------------
POST — Tworzy zasób lub wywołuje przetwarzanie po stronie serwera.
Bezpieczna: Nie | Idempotentna: Nie | Cache'owalna: Nie
Treść żądania: Częste (dane do utworzenia, wejście komendy).
Typowe statusy: 201 Created, 202 Accepted, 200 OK, 400 Bad Request, 409 Conflict
Kiedy używać: Użyj POST, gdy serwer decyduje o URI nowego zasobu, lub gdy wysyłasz komendę/przepływ pracy.
Uwagi: Jeśli potrzebujesz bezpiecznych powtórzeń, rozważ klucze idempotencji lub alternatywne rozwiązania.
Przykład: curl -i -X POST "https://api.example.com/v1/users" -H "Content-Type: application/json" -d '{"name":"Ada"}'
----------------------------
PUT — Tworzy lub zastępuje zasób pod znanym URI.
Bezpieczna: Nie | Idempotentna: Tak | Cache'owalna: Nie
Treść żądania: Częste (pełna reprezentacja).
Typowe statusy: 200 OK, 204 No Content, 201 Created, 400 Bad Request, 404 Not Found
Kiedy używać: Użyj PUT dla pełnej semantyki zastąpienia, gdy klient znający docelowe URI może wysłać kompletną reprezentację.
Uwagi: Ponieważ PUT jest idempotentne, powtórzenie tego samego żądania powinno prowadzić do tego samego stanu końcowego.
Przykład: curl -i -X PUT "https://api.example.com/v1/users/123" -H "Content-Type: application/json" -d '{"name":"Ada"}'
----------------------------
DELETE — Usuwa zasób.
Bezpieczna: Nie | Idempotentna: Tak | Cache'owalna: Nie
Treść żądania: Nietypowe.
Typowe statusy: 204 No Content, 200 OK, 404 Not Found
Kiedy używać: Użyj DELETE do usunięcia zasobu wskazanego przez URI. Rozważ mechanizm soft-delete, jeśli odzyskiwanie ma znaczenie.
Uwagi: DELETE jest idempotentne: usunięcie tego samego zasobu dwukrotnie powinno dać ten sam stan końcowy (zasób nieobecny).
Przykład: curl -i -X DELETE "https://api.example.com/v1/users/123"
----------------------------
PATCH — Wprowadza częściową aktualizację zasobu.
Bezpieczna: Nie | Idempotentna: Zwykle tak (zależy od formatu poprawki). | Cache'owalna: Nie
Treść żądania: Częste (częściowe zmiany).
Typowe statusy: 200 OK, 204 No Content, 400 Bad Request, 404 Not Found, 409 Conflict
Kiedy używać: Użyj PATCH, gdy chcesz zaktualizować tylko niektóre pola lub zastosować dobrze zdefiniowany zestaw zmian.
Uwagi: PATCH może być idempotentne, ale niektóre formaty poprawek (np. „zwiększenie”) nie są.
Przykład: curl -i -X PATCH "https://api.example.com/v1/users/123" -H "Content-Type: application/json" -d '{"email":"[email protected]"}'
----------------------------
OPTIONS — Opisuje opcje komunikacji dla docelowego zasobu.
Bezpieczna: Tak | Idempotentna: Tak | Cache'owalna: Nie
Treść żądania: Nietypowe.
Typowe statusy: 204 No Content, 200 OK
Kiedy używać: Użyj OPTIONS, aby odkryć wspierane metody lub do żądań preflight CORS w przeglądarce.
Uwagi: Poprawne odpowiedzi OPTIONS są istotne dla klientów przeglądarkowych korzystających z CORS.
Przykład: curl -i -X OPTIONS "https://api.example.com/v1/users"
----------------------------
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.