Отложите вызовы API, пока у клиента не появится идентификатор для аналитики. - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь реализовать решение следующей проблемы:

Когда пользователь загружает мое приложение React, для целей аналитики каждый запрос, который идет к моему API, должен быть сделан с некоторыми идентифицирующими данными, связанными сконкретный пользователь для каждого запроса.Как только пользователь вошел в систему, это, конечно, легко.Но мне нужно поддерживать неподписанных пользователей.

Сложная часть - когда пользователь сначала загружает приложение, и исходные запросы API делаются для загрузки данных.Даже если я немедленно позвоню в API для создания анонимного пользователя и отправлю обратно токен, идентифицирующий этого пользователя, все еще есть некоторые вызовы API, которые поступят на сервер без идентификатора.

Как я могу гарантировать, чтовыполняются только запросы, связанные с пользователем?

Одна из идей, которые я рассмотрел:

  1. При загрузке приложения отправьте запрос в бэкэнд для получения идентификатора (если у пользователя еще нетодин загружен на клиент)
  2. До получения идентификатора отложить все остальные вызовы.Например, если при загрузке домашней страницы есть запрос get, отправленный на https://my_api.com/home_page_items, этот запрос должен быть «приостановлен» до получения идентификатора на клиенте.После получения идентификатора следует делать любые приостановленные запросы.

В настоящее время я использую пользовательское промежуточное ПО для перехвата и обработки всех запросов API, сделанных в приложении React, поэтому есть центральное место, где я могу действоватьпо запросам.Тем не менее, я не уверен в том, как и передовые практики для создания очереди отложенных вызовов API, которые должны возобновиться после выполнения какого-либо критерия (в этом случае клиент получил токен).

ДругойИдея, о которой я думал, - это сгенерированный клиентом UUID, который создается сразу при загрузке приложения и временно используется в качестве идентификатора при запросах, пока клиент не получит токен от серверной части.Затем, сгенерированный клиентом UUID может быть связан с учетной записью пользователя, так что все запросы, сделанные пользователем, могут быть связаны с ними.

Это похоже на то, что другие разработчики пытались сделать в других проектах.Я просто не уверен, как конкретно реализовать это.

Любое направление приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...