Sobes.tech
Middle

Jsou všechny metody HTTP idempotentní?

sobes.tech AI

Odpověď od AI

Ne, všechny metody HTTP nejsou idempotentní.

Idempotence znamená, že pokud provedete stejnou žádost několikrát se stejnými parametry, výsledek na straně serveru se po prvním úspěšném provedení nezmění.

Hlavní metody HTTP a jejich idempotence:

Metoda Je idempotentní? Účel
GET Ano Získání dat
HEAD Ano Získání hlaviček odpovědi
PUT Ano Vytvoření nebo úplná výměna zdroje
DELETE Ano Odstranění zdroje
POST Ne Odeslání dat pro vytvoření zdroje nebo provedení akce
PATCH Ne Částečná aktualizace zdroje

POST a PATCH nejsou idempotentní, protože jejich provedení může vést k vytvoření nového zdroje nebo ke změně stavu zdroje v závislosti na implementaci, což není jednoznačné po prvním úspěšném provedení. Například opakované provádění požadavku POST na vytvoření uživatele obvykle povede ke vzniku několika uživatelů.

Příklad neidempotentního POST:

{
  "username": "testuser"
}

Odeslání takového POST může při každém volání vytvořit nového uživatele s username: "testuser".

Příklad idempotentního PUT:

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

Odeslání takového PUT na zdroj s ID 123 nastaví jeho stav na "completed". Opakování nezmění stav, pokud již je "completed".