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".