Idempotentie is een eigenschap van een actie waarbij hem één keer of vele keren uitvoeren hetzelfde eindresultaat geeft. Druk per ongeluk twee keer op de knop en er gebeurt niets extra’s. Het systeem belandt hoe dan ook op dezelfde plek.
Een simpel voorbeeld is de knop om een lift te roepen. Of je nu één keer drukt of vijf keer omdat je ongeduldig bent, de lift komt nog steeds precies één keer. Stel je nu een betaling voor: een wankele verbinding laat je app een afschrijving opnieuw proberen, en zonder idempotentie wordt de klant twee keer belast. Mét idempotentie wordt de tweede poging herkend als duplicaat en stilletjes genegeerd. Daarom leunt een degelijk ontworpen API, zeker een REST API die geld of bestellingen afhandelt, op idempotency keys om retries veilig te maken.
Het is ook een vangnet voor automatisering. Als een webhook twee keer afgaat door een netwerkhapering, zorgt een idempotente handler dat de bestelling maar één keer wordt aangemaakt.
Hoe het onder de motorkap werkt is het weten waard. De client stuurt een unieke sleutel mee, en de server bewaart het resultaat de eerste keer dat hij die sleutel ziet. Komt dezelfde sleutel opnieuw langs, dan slaat de server het werk over en speelt het bewaarde antwoord terug. Dit raakt direct aan goede error handling: de veiligste manier om van een time-out te herstellen is opnieuw proberen, en dat is alleen veilig als de actie idempotent is. De valkuil is aannemen dat een actie zonder gevolgen te herhalen is terwijl die telkens iets nieuws aanmaakt.
Bij TopDevs ontwerpen we betaal- en koppelingsflows idempotent, zodat een haperende verbinding of een ongeduldige klik nooit verandert in een dubbele afschrijving of een verdubbeld record.