Sobes.tech
Middle

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