Idempotency betyder, at det at udføre en operation flere gange har samme effekt som at udføre den én gang. Det betyder noget, fordi netværk er upålidelige: når en client sender en request, og responset aldrig ankommer, kan den ikke vide, om serveren behandlede den. Hvis den prøver igen, kan en ikke-idempotent operation køre to gange.
Problemet
Client ──POST /payments {$100}──▶ Server (trækker $100 ✓)
Client ◀────────X (timeout)────── Server (response tabt)
Client ──POST /payments {$100}──▶ Server (trækker $100 IGEN ✗ → $200!)
, og er naturligt idempotente, så det er sikkert at prøve dem igen. er — det er præcis her, dobbelttrækninger og dubletordrer kommer fra.
