Sú všetky metódy HTTP idempotentné?
sobes.tech AI
Odpoveď od AI
Nie, nie všetky metódy HTTP sú idempotentné.
Idempotencia znamená, že ak vykonáte rovnakú požiadavku viackrát s rovnakými parametrami, výsledok na strane servera sa po prvom úspešnom vykonaní nezmení.
Hlavné metódy HTTP a ich idempotentnosť:
| Metóda | Je idempotentná? | Účel |
|---|---|---|
GET |
Áno | Získať údaje |
HEAD |
Áno | Získať hlavičky odpovede |
PUT |
Áno | Vytvoriť alebo úplne nahradiť zdroj |
DELETE |
Áno | Vymazať zdroj |
POST |
Nie | Odoslať údaje na vytvorenie zdroja alebo vykonanie akcie |
PATCH |
Nie | Čiastočná aktualizácia zdroja |
POST a PATCH nie sú idempotentné, pretože ich vykonanie môže viesť k vytvoreniu nového zdroja alebo k zmene stavu zdroja v závislosti od implementácie, čo nie je jednoznačné po prvom úspešnom vykonaní. Napríklad, opakované vykonanie požiadavky POST na vytvorenie používateľa zvyčajne povedie k vytvoreniu viacerých používateľov.
Príklad neidempotentného POST:
{
"username": "testuser"
}
Odoslanie takejto POST požiadavky môže pri každom volaní vytvoriť nového používateľa s username: "testuser".
Príklad idempotentného PUT:
{
"id": 123,
"status": "completed"
}
Odoslanie takejto PUT na zdroj s ID 123 nastaví jeho stav na "completed". Opakovanie nezmení stav, ak už je "completed".