Idempotens betyr at det å utføre en operasjon flere ganger har samme effekt som å utføre den én gang. Det betyr noe fordi nettverk er upålitelige: når en klient sender en request og responsen aldri kommer fram, kan den ikke vite om serveren behandlet den. Hvis den prøver på nytt, kan en ikke-idempotent operasjon kjøre to ganger.
Problemet
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
, og er naturlig idempotente, så det er trygt å prøve dem på nytt. er det — det er nettopp her dobbelttrekk og dobbeltordrer kommer fra.
