Sobes.tech
Middle

Czy wszystkie metody HTTP są idempotentne?

sobes.tech AI

Odpowiedź od AI

Nie, nie wszystkie metody HTTP są identyczne.

Tożsamość oznacza, że jeśli wykonasz to samo żądanie wielokrotnie z tymi samymi parametrami, wynik po stronie serwera nie zmieni się po pierwszym udanym wykonaniu.

Główne metody HTTP i ich tożsamość:

Metoda Czy jest identyczna? Cel
GET Tak Pobieranie danych
HEAD Tak Pobieranie nagłówków odpowiedzi
PUT Tak Tworzenie lub pełna zamiana zasobu
DELETE Tak Usuwanie zasobu
POST Nie Wysyłanie danych do tworzenia zasobu lub wykonania akcji
PATCH Nie Częściowa aktualizacja zasobu

POST i PATCH nie są identyczne, ponieważ każde ich wykonanie może prowadzić do utworzenia nowego zasobu lub zmiany stanu zasobu w zależności od implementacji, co nie jest jednoznaczne po pierwszym udanym wykonaniu. Na przykład wielokrotne wykonanie żądania POST do tworzenia użytkownika zwykle spowoduje utworzenie kilku użytkowników.

Przykład nieidentycznego POST:

{
  "username": "testuser"
}

Wysłanie takiego POST może utworzyć nowego użytkownika z username: "testuser" przy każdym wywołaniu.

Przykład identycznego PUT:

{
  "id": 123,
  "status": "completed"
}

Wysłanie takiego PUT na zasób z ID 123 ustawi jego status na "completed". Powtórne wykonanie nie zmieni statusu, jeśli już jest "completed".