Idempotency म्हणजे एखादी operation अनेक वेळा केल्याने एकदा केल्यासारखाच परिणाम होतो. हे महत्त्वाचे आहे कारण networks अविश्वासार्ह असतात: जेव्हा client request पाठवतो आणि response कधीच येत नाही, तेव्हा server ने त्यावर प्रक्रिया केली का हे त्याला सांगता येत नाही. जर तो retry करतो, तर non-idempotent operation दोनदा चालू शकते.
समस्या
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
, , आणि नैसर्गिकरित्या idempotent आहेत, म्हणून त्यांना retry करणे सुरक्षित आहे. — duplicate charges आणि duplicate orders नेमके इथूनच येतात.
