sswwssww
@sswwssww

Как обрабатывать на бэкенде случайные множественные запросы с фронтенда?

Есть приложение. Клиент на мобильном телефоне вводит данные о выполненных задачах за день, отправляет запрос на сервер. Приложение добавляет запись в базу и возвращает какой то ответ (% выполненной работы от нормы за день, например).
Один из клиентов нажал на форму отправки случайно несколько раз подряд.
Какими способами бэк может обработать эту ситуацию? Если фронт не могу трогать.
  • Вопрос задан
  • 53 просмотра
Решения вопроса 2
vabka
@vabka
Токсичный шарпист
Если трогать фронт нельзя, то как единственный возможный вариант - на все последующие запросы кидать ошибку, либо делать лимит запросов.

Если фронт трогать можно, то есть разные варианты:
https://habr.com/ru/company/yandex/blog/442762/
Ответ написан
@rPman
К сожалению правильно реализовать это можно, только имея доступ к исправлению фронтэнда
Исключение дублированных данных можно реализовать добавлением поля - идентификатор запроса на фронтэнде, добавляемый в момент отправки данных, значение его же генерируется в момент открытия формы на клиенте (кстати тут нужно хорошо думать, когда именно должен появляться новый идентификатор запроса).

Если же фронтэнд трогать нельзя, значит бакэнд должен как то идентифицировать дубляж данных. Самое простое (если это позволяет бизнеслогика) - хранить в сессии хеш (точнее список таковых за последние несколько секунд) последнего запроса на изменение данных с фронтэнда и игнорировать те, у которых он повторяется. Почему нужно хранить список, потому при использовании ajax и проблемах с интернет, запрос может заметно подзадержаться, пользователь может перейти на другую страницу (SPA или использование web worker) отправить там запрос и перейти снова к первоначальной, и отправить повторно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы