Idempotency betyder att utföra en operation flera gånger har samma effekt som att utföra den en gång. Det spelar roll eftersom nätverk är opålitliga: när en client skickar en request och responsen aldrig kommer fram kan den inte avgöra om servern bearbetade den. Om den försöker igen kan en icke-idempotent operation köras två gånger.
Problemet
Client ──POST /payments {$100}──▶ Server (debiterar $100 ✓)
Client ◀────────X (timeout)────── Server (response förlorad)
Client ──POST /payments {$100}──▶ Server (debiterar $100 IGEN ✗ → $200!)
, och är naturligt idempotent, så att försöka igen med dem är säkert. är — det är precis här duplicerade debiteringar och duplicerade orders kommer från.
