patternMajor
Idempotency in API design — preventing duplicate operations
Viewed 0 times
idempotency keyduplicate requestretry safetyUPSERTexactly-once
Problem
Network retries, double-clicks, or webhook redelivery cause duplicate operations. Results in double charges or inconsistent state.
Solution
Strategies: (1) Idempotency keys: client sends UUID, server checks if already processed. Store key + result for 24h. (2) Database: use UPSERT instead of INSERT. (3) Payments: use Stripe's idempotency_key. (4) PUT is naturally idempotent, POST is not. (5) Track processed event IDs and skip duplicates. (6) Frontend: disable submit button, use optimistic UI.
Why
Networks are unreliable. A timeout doesn't mean failure — it might have succeeded but the response was lost. Without idempotency, retries execute the operation twice.
Revisions (0)
No revisions yet.