Javascript 反应/重复和招摇过市客户

Javascript 反应/重复和招摇过市客户,javascript,reactjs,redux,react-redux,swagger,Javascript,Reactjs,Redux,React Redux,Swagger,我正试图找出构造React/Redux应用程序的最佳方法,该应用程序将主要使用api访问 问题是我不完全确定在哪里存储对招摇过市客户机的引用。在登录并获得JWT auth令牌之后,我需要告诉所有后续请求添加authorize头。对于axios,这是微不足道的,因为它会一直保留其标题,直到另行通知为止。看起来大摇大摆的客户机并没有这样做。因此,理想情况下,我会在登录时创建一个swagger客户端,添加头信息,并在将来的所有请求中引用它(这样,它在一个页面应用程序中只获取一次json模式) 既然我是

我正试图找出构造React/Redux应用程序的最佳方法,该应用程序将主要使用api访问

问题是我不完全确定在哪里存储对招摇过市客户机的引用。在登录并获得JWT auth令牌之后,我需要告诉所有后续请求添加authorize头。对于axios,这是微不足道的,因为它会一直保留其标题,直到另行通知为止。看起来大摇大摆的客户机并没有这样做。因此,理想情况下,我会在登录时创建一个swagger客户端,添加头信息,并在将来的所有请求中引用它(这样,它在一个页面应用程序中只获取一次json模式)

既然我是在一个动作的上下文中做这件事的,那么最好将这个招摇过市的客户端存储在Redux存储中(我将如何实现这一点)?或者我会在Redux之外创建它的静态实例吗

// app init
const createStoreWithMiddleware = applyMiddleware(promise)(createStore);
const store = createStoreWithMiddleware(reducers);
export const swaggerClient = { instance: authService.createFromState().then(() => {
    ReactDOM.render(
       <Provider store={store}></Provider>
       ...
    );
});
如果页面被刷新,我们需要从本地存储中的BealerToken重建swagger客户端

// authService
import { swaggerClient } from '../index';
function createFromState() {
  // if authentication is known from localstorage, we can rebuild
  // a swagger client
  if(isAuthenticated()) {
    const authentication = getAuthentication();
    return Swagger({
      url: 'https://localhost/swagger/v1/swagger.json',
      requestInterceptor(req) {
        req.headers['Authorization'] = `Bearer ${authentication.bearerToken}`;
        return req;
      }
    }).then((client) => {
      swaggerClient.instance = client;
      return client;
    });
  }
}

我有点困惑这是否是正确的方向,可能是一个新手问题。从本地存储进行恢复时,必须等待swagger客户端加载,这似乎是一种疯狂的方式(以防止未来通话中出现竞争情况)。

如果您在“本地存储”中询问,您可能会得到更快/更好的答案。
// authService
import { swaggerClient } from '../index';
function createFromState() {
  // if authentication is known from localstorage, we can rebuild
  // a swagger client
  if(isAuthenticated()) {
    const authentication = getAuthentication();
    return Swagger({
      url: 'https://localhost/swagger/v1/swagger.json',
      requestInterceptor(req) {
        req.headers['Authorization'] = `Bearer ${authentication.bearerToken}`;
        return req;
      }
    }).then((client) => {
      swaggerClient.instance = client;
      return client;
    });
  }
}