Как избежать создания двух гномиков, если сеть моргнула и браузер отправил повторный POST-запрос?

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

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

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Сервер связывает ключ с пользователем, операцией и отпечатком тела запроса. Проверка ключа и создание сущности должны быть атомарными; уникальное ограничение защищает параллельные запросы. Повтор с тем же ключом, но другим содержимым отклоняется как конфликт. Если первая операция ещё выполняется, контракт определяет ожидание или ответ о незавершённой обработке. Отключение кнопки в браузере полезно для UX, но не защищает от сетевых повторов и нескольких вкладок.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее