Sobes.tech
Middle

Caso pratico: un'app per ordinare cibo, durante la creazione dell'ordine internet è caduto, l'utente ha cliccato due volte, sono stati creati due ordini. Qual è la causa e come correggerlo?

sobes.tech AI

Risposta dell'AI

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

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

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

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

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

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

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

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