Idempotency (идемпотентность) означает, что выполнение операции несколько раз даёт тот же эффект, что и выполнение один раз. Это важно, потому что сети ненадёжны: когда клиент отправляет запрос, а ответ так и не приходит, он не может понять, обработал ли его сервер. Если он повторит, неидемпотентная операция может выполниться дважды.
Проблема
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
, и естественно идемпотентны, поэтому их повтор безопасен. — ; именно отсюда берутся двойные списания и дублирующиеся заказы.
