Я пытаюсь реализовать решение следующей проблемы:
Когда пользователь загружает мое приложение React, для целей аналитики каждый запрос, который идет к моему API, должен быть сделан с некоторыми идентифицирующими данными, связанными сконкретный пользователь для каждого запроса.Как только пользователь вошел в систему, это, конечно, легко.Но мне нужно поддерживать неподписанных пользователей.
Сложная часть - когда пользователь сначала загружает приложение, и исходные запросы API делаются для загрузки данных.Даже если я немедленно позвоню в API для создания анонимного пользователя и отправлю обратно токен, идентифицирующий этого пользователя, все еще есть некоторые вызовы API, которые поступят на сервер без идентификатора.
Как я могу гарантировать, чтовыполняются только запросы, связанные с пользователем?
Одна из идей, которые я рассмотрел:
- При загрузке приложения отправьте запрос в бэкэнд для получения идентификатора (если у пользователя еще нетодин загружен на клиент)
- До получения идентификатора отложить все остальные вызовы.Например, если при загрузке домашней страницы есть запрос get, отправленный на
https://my_api.com/home_page_items
, этот запрос должен быть «приостановлен» до получения идентификатора на клиенте.После получения идентификатора следует делать любые приостановленные запросы.
В настоящее время я использую пользовательское промежуточное ПО для перехвата и обработки всех запросов API, сделанных в приложении React, поэтому есть центральное место, где я могу действоватьпо запросам.Тем не менее, я не уверен в том, как и передовые практики для создания очереди отложенных вызовов API, которые должны возобновиться после выполнения какого-либо критерия (в этом случае клиент получил токен).
ДругойИдея, о которой я думал, - это сгенерированный клиентом UUID, который создается сразу при загрузке приложения и временно используется в качестве идентификатора при запросах, пока клиент не получит токен от серверной части.Затем, сгенерированный клиентом UUID может быть связан с учетной записью пользователя, так что все запросы, сделанные пользователем, могут быть связаны с ними.
Это похоже на то, что другие разработчики пытались сделать в других проектах.Я просто не уверен, как конкретно реализовать это.
Любое направление приветствуется!