Idempotency tarkoittaa, että operaation suorittaminen useita kertoja vaikuttaa samoin kuin sen suorittaminen kerran. Sillä on merkitystä, koska verkot ovat epäluotettavia: kun client lähettää pyynnön eikä vastaus koskaan saavu, se ei voi tietää käsittelikö palvelin sen. Jos se uudelleenyrittää, ei-idempotentti operaatio saattaa ajaa kahdesti.
Ongelma
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
, ja ovat luonnostaan idempotentteja, joten niiden uudelleenyrittäminen on turvallista. ole — juuri tästä duplikaattiveloitukset ja duplikaattitilaukset syntyvät.
