Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про FastAPI: idempotency, key

Как спроектировать API для платежей так, чтобы отличать повторный запрос пользователя от повторной доставки сообщения?

Вопрос проверяет понимание идемпотентности, надежности API и проектирования платежных систем.

Короткий ответ

Для различения повторного запроса и повторной доставки используют идемпотентные ключи. Клиент передает уникальный idempotency key, который сервер сохраняет вместе с результатом операции. При повторном запросе с тем же ключом сервер возвращает прежний результат вместо повторного выполнения операции. Это предотвращает двойные списания.

Длинный ответ

Проблема повторных запросов

В платежных системах повторные запросы возникают из-за:

  1. Повторной отправки пользователем

  2. Повторов со стороны сети или балансировщика

  3. Повторной доставки сообщений

Без защиты это может привести к двойным списаниям.

Идемпотентность

Определение:
Идемпотентность — это свойство операции, при котором повторный вызов с теми же параметрами дает тот же результат без повторного выполнения.

Использование idempotency key

Алгоритм работы:

  1. Клиент генерирует уникальный ключ

  2. Отправляет его в заголовке или теле запроса

  3. Сервер сохраняет ключ и результат операции

  4. При повторном запросе возвращает сохраненный результат

Пример:

POST /payments
Idempotency-Key: abc123

Где хранить ключи

Часто используют:

  1. Redis

  2. PostgreSQL

  3. специализированный storage

Важные детали проектирования

  1. Ключ должен быть уникален для операции

  2. Нужно хранить статус операции

  3. Нужно обрабатывать частично завершенные операции

Вывод

Идемпотентные ключи — основной механизм защиты платежных API от повторного выполнения операций.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • FastAPI

    FastAPI

Ключевые слова

#idempotency

#key

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.