推迟api调用,直到客户端具有用于分析的标识符

时间:2018-11-22 00:04:25

标签: reactjs react-redux client-server

我正在尝试实现以下问题的解决方案:

当用户加载我的React应用程序时,出于分析目的,对我的api的每个请求都应使用一些标识数据来进行,将特定用户与每个请求相关联。一旦用户登录,这当然很容易。但是我需要支持非登录用户。

最具挑战性的部分是用户何时首先加载应用程序,并发出初始api请求以加载数据。即使我立即调用api来创建一个匿名用户并发回一个标识该用户的令牌,仍然会有一些api调用会到达服务器而没有标识符。

如何确保仅发出与用户关联的请求?

我考虑过的一个主意是

  1. 在应用加载时,向后端发送请求以获取标识符(如果用户尚未在客户端上加载该标识符)
  2. 在收到标识符之前,请推迟所有其他呼叫。例如,如果在首页加载中,有一个对https://my_api.com/home_page_items的获取请求,则该请求应“暂停”,直到在客户端上收到标识符为止。收到标识符后,任何暂停的请求都应发出。

我目前正在使用自定义中间件来捕获和处理React应用程序中发出的所有api请求,因此我可以在中心位置处理请求。但是,我不确定创建延迟的api调用队列的方法和最佳实践,一旦满足某些条件(在这种情况下,客户端已收到令牌),该队列就会恢复。

我想到的另一个想法是客户端生成的UUID,它在应用程序加载时立即创建,并临时用作请求的标识符,直到客户端从后端收到令牌为止。然后,以后,可以将客户端生成的UUID与用户帐户相关联,以便可以将用户发出的所有请求与它们相关联。

这似乎是其他开发人员在其他项目中尝试做的事情。我只是不确定如何具体实现它。

任何方向都值得赞赏!

0 个答案:

没有答案