Клиент создаёт устойчивый ключ идемпотентности для попытки заказа и повторяет запрос с тем же ключом. Backend атомарно связывает ключ с одним заказом и возвращает сохранённый результат.
Как настроить интеграцию фронтенда и бэкенда в приложении заказа такси, чтобы при повторной отправке запроса после потери сети не создавались два заказа?
Клиент создаёт устойчивый ключ идемпотентности для попытки заказа и повторяет запрос с тем же ключом. Backend атомарно связывает ключ с одним заказом и возвращает сохранённый результат.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Клиент создаёт устойчивый ключ идемпотентности для попытки заказа и повторяет запрос с тем же ключом. Backend атомарно связывает ключ с одним заказом и возвращает сохранённый результат.
Ключ ограничивают пользователем и операцией, а повтор с другим телом отклоняют. Простая предварительная проверка без уникальности или блокировки не защищает параллельные запросы. Если ответ потерян, клиент может узнать статус по ключу, а не создать новую попытку. После окончательного решения о новом заказе нужен новый ключ. На UI блокировка кнопки полезна, но не заменяет серверную гарантию.