Sobes.tech
Back to questions
Middle+
3

Как сделать POST-запрос идемпотентным?

Companies where asked
МКБ

Answer from AI

sobes.tech AI

POST-запрос по умолчанию не идемпотентен, так как каждый вызов может создавать новые ресурсы или изменять состояние сервера. Чтобы сделать POST идемпотентным, можно использовать следующие подходы:

  • Идемпотентный ключ (Idempotency Key): клиент генерирует уникальный идентификатор для каждого запроса и отправляет его в заголовке или теле. Сервер сохраняет этот ключ и результат запроса, при повторном получении того же ключа возвращает тот же ответ, не создавая дубликатов.

  • Использование уникальных идентификаторов в теле запроса: например, если создаётся заказ с уникальным номером, повторный запрос с тем же номером не создаст новый заказ.

Пример с Idempotency Key на HTTP:

POST /orders HTTP/1.1
Idempotency-Key: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json

{
  "product_id": "abc123",
  "quantity": 1
}

Сервер при повторном запросе с тем же ключом вернёт результат первого запроса, предотвращая дублирование.