#api

Идемпотентная операция — это операция, которая при многократном вызове не изменяет состояние системы

Результат идемпотентного вызова может меняться

Классически идемпотентны:

По умолчанию неидемпотентны:

но могут стать идемпотентными по контракту.

Свойство системы — не меняться при многократных одинаковых запросах (с теми же данными/ключом).

В некоторых публичных API для обеспечения идемпотентности, в запросах необходимо передавать заголовок Idempotency-Key UUID (4версии)

Если клиент пытается создать объект который уже есть - 409 HTTP

Когда сервис получит запрос с заголовком Idempotency-Key, он проверит, была ли ранее создана операция с таким UUID. Если операция была создана, сервер вернет объект Operation с текущим статусом этой операции.

Практики

  • Обрабатывать повторные запросы по ключу (Idempotency-Key/определяющий набор полей), хранить результат или маркер операции.

  • Для создания ресурсов возвращать один и тот же ответ (200/201) или 409, если объект уже существует.

  • Для удаления можно возвращать 204 при повторе или 410, если ресурс удалён.

  • Продумать TTL/очистку ключей, дедупликацию и защиту от гонок (lock/lease).

  • Поддерживать корректные коды для ретраев клиентов и прокси.

Связанные темы

Последнее обновление