Sobes.tech
Back to questions
Middle
3

Практический кейс: приложение для заказа еды, при создании заказа моргнул интернет, пользователь кликнул дважды, создалось два заказа. В чем причина и как исправить?

Companies where asked
EcoFinance

Answer from AI

sobes.tech AI

Причина создания двух заказов — повторный клик пользователя во время временного отсутствия интернета, из-за чего приложение не получило подтверждение о создании первого заказа и отправило запрос повторно.

Как исправить:

  1. Дебаунсинг или блокировка кнопки: После первого клика кнопка "Создать заказ" блокируется до получения ответа от сервера.

  2. Идемпотентность на сервере: Сервер должен уметь распознавать повторные запросы и не создавать дубликаты. Например, клиент генерирует уникальный идентификатор заказа (UUID) и отправляет его вместе с запросом. Если сервер видит уже существующий заказ с таким ID, он не создает новый.

  3. Обработка ошибок сети: При потере соединения приложение может показывать пользователю сообщение и не отправлять повторный запрос без явного подтверждения.

Пример идемпотентного запроса с UUID:

String orderId = UUID.randomUUID().toString();
// Отправляем orderId вместе с данными заказа
// Сервер проверяет, есть ли заказ с таким orderId
// Если есть — возвращает существующий заказ, иначе создает новый

Таким образом, комбинация клиентской блокировки и серверной идемпотентности решит проблему двойного создания заказов.