TGViewer
Библиотека программиста Библиотека программиста @proglibrary · 78.2K subscribers
Post #11873 2.41K
Как защитить API от повторного выполнения операций

Клиент отправил POST, сервер выполнил операцию, но ответ потерялся из-за тайм-аута. Клиент повторяет запрос, и без защиты сервер может второй раз создать ресурс, изменить состояние или отправить письмо.

Идемпотентный эндпоинт связывает уникальный ключ операции с отпечатком тела запроса и сохранённым результатом. Первый обработчик атомарно резервирует ключ, поэтому параллельные запросы не запускают операцию заново. Повтор с тем же содержимым получает прежний результат, а тот же ключ с другим содержимым возвращает 409 Conflict.

Контракт идемпотентного API также охватывает статус незавершённой обработки, срок хранения ключей и внешние эффекты. Например, событие для очереди записывают вместе с результатом в одной транзакции, чтобы повторный запрос не породил второе действие.
  • 👍 8
  • 🔥 4
  • ❤ 3
  • 👾 2
  • 🥰 1
  • 👏 1
  • 😁 1
  • 🤔 1
More from @proglibrary
  1. Sep 30, 2026Вот почему оперативная память стоит так дорого 🙄🙄🙄 🐸 Библиотека программиста
  2. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  3. Sep 30, 2026Как спроектировать память ИИ-агента, а не склад контекста Один индекс для диалогов, правил…
  4. Sep 29, 2026Кодить — это хорошо, а разбираться в том, что происходит за кадром, тоже полезно. Что там…
  5. Sep 29, 2026🖥 Git ускорили и добавили несколько полезных фишек: 🟡 git add --resolved — безопаснее за…
  6. Sep 29, 2026Почему Big O недостаточно для выбора структуры данных в C++ Автор создал hashbrowns, набор…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →