【发布时间】:2020-03-04 00:14:05
【问题描述】:
好的,所以我想在我的全局 axios 配置中添加一个响应拦截器,如果在刷新 401 错误后重试请求一次令牌。
这是我当前的全局 axios 配置:
import axios from "axios";
export default axios.create({
baseURL: process.env.REACT_APP_API,
headers: {
"content-type": "application/json"
},
responseType: "json"
});
现在我已经研究了我的问题已解决 here,但是,我不知道如何在我的 axios 配置文件的答案中附加或使用拦截器功能(在我将它编辑到我的需要 ofc) 拦截器函数如下所示:
createAxiosResponseInterceptor() {
const interceptor = axios.interceptors.response.use(
response => response,
error => {
// Reject promise if usual error
if (errorResponse.status !== 401) {
return Promise.reject(error);
}
/*
* When response code is 401, try to refresh the token.
* Eject the interceptor so it doesn't loop in case
* token refresh causes the 401 response
*/
axios.interceptors.response.eject(interceptor);
return axios.post('/api/refresh_token', {
'refresh_token': this._getToken('refresh_token')
}).then(response => {
saveToken();
error.response.config.headers['Authorization'] = 'Bearer ' + response.data.access_token;
return axios(error.response.config);
}).catch(error => {
destroyToken();
this.router.push('/login');
return Promise.reject(error);
}).finally(createAxiosResponseInterceptor);
}
);
}
非常感谢!
【问题讨论】:
标签: javascript reactjs axios