Idempotency ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇੱਕ ਕਾਰਵਾਈ ਨੂੰ ਕਈ ਵਾਰ ਕਰਨ ਦਾ ਅਸਰ ਇੱਕ ਵਾਰ ਕਰਨ ਵਰਗਾ ਹੀ ਹੁੰਦਾ ਹੈ। ਇਹ ਮਾਇਨੇ ਰੱਖਦਾ ਹੈ ਕਿਉਂਕਿ networks ਭਰੋਸੇਯੋਗ ਨਹੀਂ ਹਨ: ਜਦੋਂ ਇੱਕ client ਇੱਕ request ਭੇਜਦਾ ਹੈ ਅਤੇ response ਕਦੇ ਨਹੀਂ ਆਉਂਦਾ, ਤਾਂ ਇਹ ਨਹੀਂ ਦੱਸ ਸਕਦਾ ਕਿ server ਨੇ ਇਸਨੂੰ ਸੰਸਾਧਿਤ ਕੀਤਾ ਜਾਂ ਨਹੀਂ। ਜੇ ਇਹ retry ਕਰਦਾ ਹੈ, ਤਾਂ ਇੱਕ non-idempotent ਕਾਰਵਾਈ ਦੋ ਵਾਰ ਚੱਲ ਸਕਦੀ ਹੈ।
ਸਮੱਸਿਆ
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 ਆਉਂਦੇ ਹਨ।
