Вступить в клуб →
средняявопросREST API и валидация данных

Клиент повторил POST оплаты после таймаута, и заказ оплатили дважды

Мобильное приложение отправляет POST /payments. На плохой сети ответ не пришёл за 10 секунд, приложение повторило запрос. Выяснилось, что первый запрос дошёл и выполнился — деньги списаны дважды.

Как устроить API, чтобы клиент мог безопасно повторять такой запрос?

  • Ключ идемпотентности: повтор с тем же ключом не выполняется заново
  • Запретить приложению повторять POST-запросы вообще
  • Увеличить таймаут на клиенте до минуты, чтобы ответ успевал прийти
  • Заменить POST на PUT — PUT идемпотентен по стандарту

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела