Вопрос проверяет понимание поведения клиентов при ошибках сервера и последствий повторов.
Ошибка 500 не говорит клиенту, выполнилась операция или нет. Клиент может безопасно повторить запрос, но сервер может выполнить действие повторно. Это приводит к дублированию данных и нарушению логики. Без дополнительных механизмов такие ошибки накапливаются.
HTTP 500 означает внутреннюю ошибку сервера, но не даёт информации о состоянии операции.
Клиент действует рационально, но это создаёт риски.
Неопределённый результат
операция могла выполниться частично
клиент не знает итог
Повтор побочных эффектов
повторные INSERT
повторные списания
повторные сообщения в очереди
Нарушение консистентности
разные подсистемы видят разное состояние
сложно восстановить целостность
Рост нагрузки
повторные запросы
лавинообразные ретраи
сервер списал деньги
упал до ответа
клиент повторил запрос
деньги списались снова
идемпотентные операции
idempotency key
журналирование операций
асинхронная обработка
Повторные запросы после 500 — нормальное поведение клиента, и API должно быть спроектировано так, чтобы это не ломало систему.