Idempotency reiškia, kad operacijos atlikimas kelis kartus turi tą patį efektą kaip atlikimas vieną kartą. Tai svarbu, nes tinklai nepatikimi: kai klientas siunčia užklausą, o atsakymas niekada neateina, jis negali pasakyti, ar serveris ją apdorojo. Jei jis pakartoja, ne-idempotent operacija gali įvykti du kartus.
Problema
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
, ir yra natūraliai idempotent, todėl juos kartoti saugu. — būtent iš čia atsiranda dvigubi nuskaitymai ir dvigubi orders.
