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