Idempotency, bir işlemi birden çok kez gerçekleştirmenin, bir kez gerçekleştirmekle aynı etkiye sahip olması demektir. Önemlidir çünkü ağlar güvenilmezdir: bir client bir istek gönderdiğinde ve response asla gelmediğinde, server'ın onu işleyip işlemediğini anlayamaz. Yeniden denerse, idempotent olmayan bir işlem iki kez çalışabilir.
Sorun
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
, ve doğal olarak idempotent'tir, bu yüzden onları yeniden denemek güvenlidir. — yinelenen ücretlendirmeler ve yinelenen order'lar tam olarak buradan gelir.
