Sobes.tech
Middle

Практиկ դեպք: սննդի պատվերի հավելված, պատվերը ստեղծելիս ինտերնետը ընկավ, օգտվողը երկու անգամ սեղմեց, երկու պատվեր ստեղծվեց: Ի՞նչ է պատճառը և ինչպես ուղղել այն։

sobes.tech AI

Պատասխան AI-ից

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

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

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

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

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

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

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

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