Idempotency หมายถึงการทำการกระทำหนึ่ง หลายครั้งให้ผลเหมือนทำครั้งเดียว มันสำคัญเพราะเครือข่ายไม่น่าเชื่อถือ: เมื่อ client ส่ง request แล้ว response ไม่เคยมาถึง มันบอกไม่ได้ว่า server ประมวลผลไปแล้วหรือยัง ถ้ามัน retry การกระทำที่ไม่ 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 จึงปลอดภัย ส่วน — นี่แหละคือแหล่งกำเนิดของการเรียกเก็บเงินซ้ำและ order ซ้ำ
