Вопрос проверяет понимание устойчивости API к повторам запросов и сетевым сбоям.
Клиенты могут повторять запросы из-за таймаутов или ошибок сети. Если операция не идемпотентна, повтор приведёт к дублированию действий. Это особенно опасно для платежей и создания ресурсов. Идемпотентность делает API безопасным при повторах.
Idempotency — это свойство операции, при котором повторный вызов даёт тот же результат, что и первый.
В распределённых системах невозможно гарантировать, что запрос выполнится ровно один раз.
Сетевые таймауты
клиент не получил ответ
сервер выполнил операцию
Retry-механизмы
на стороне клиента
на стороне прокси или балансировщика
Ошибки уровня 500
клиент не знает, был ли эффект
Если операция неидемпотентна, возникают:
повторные списания
дублирующие записи
повторные события в очередях
Idempotency key
уникальный ключ запроса
сохранение результата операции
Атомарные операции
проверка и изменение в одном шаге
Естественная идемпотентность
PUT вместо POST
обновление по ключу
POST /payments
Idempotency-Key: 8f3a...
Сервер возвращает один и тот же результат для повторных запросов с тем же ключом.
Идемпотентность — обязательное свойство надёжных API, особенно при работе с деньгами и внешними системами.