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