如何更新 axios 实例,同时使用此响应中的数据拦截响应而无需第二个请求?任何请求后的任何响应中都可以收到新令牌。最后收到的令牌应在任何新请求中使用。
const request = (axios as any).create({
baseURL: mainConfig.apiBaseUrl,
headers: {
'Content-Type': 'application/json',
},
});
// Check token relevance and update if not relevance.
request.interceptors.response.use(response => {
if (response.headers.token !== undefined) {
response.config.headers.token = response.headers.token;
}
return response;
});
在这里,您无法为类似这样的进一步请求进行设置。
您应该使用 globalStorage 或任何其他存储来存储此令牌。
import Store from "Store";
const request = (axios as any).create({
baseURL: mainConfig.apiBaseUrl,
headers: {
'Content-Type': 'application/json',
'Authorization': Store.token
},
});
// Use latest token from store
axios.interceptors.request.use(function (config) {
const {token} = Store;
config.headers.Authorization = token;
return config;
}, function (error) {
return Promise.reject(error);
});
// Update token in store
request.interceptors.response.use(response => {
const {token} = response.headers;
if (token) {
Store.setToken(token);
}
return response;
}