拦截器
在请求或响应被 then 或 catch 处理前拦截它们。
// 添加请求拦截器
axios.interceptors.request.use(function(config){
// 在发送请求之前做些什么
returnconfig;
},function(error){
// 对请求错误做些什么
returnPromise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use(function(response){
// 对响应数据做点什么
returnresponse;
},function(error){
// 对响应错误做点什么
returnPromise.reject(error);
});
如果你想在稍后移除拦截器,可以这样:
constmyInterceptor = axios.interceptors.request.use(function(){/*...*/});
axios.interceptors.request.eject(myInterceptor);
可以为自定义 axios 实例添加拦截器
constinstance = axios.create();
instance.interceptors.request.use(function(){/*...*/});
错误处理
axios.get('/user/12345')
.catch(function(error){
if(error.response) {
// The request was made and the server responded with a status code
// that falls out of the range of 2xx
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
}elseif(error.request) {
// The request was made but no response was received
// `error.request` is an instance of XMLHttpRequest in the browser and an instance of
// http.ClientRequest in node.js
console.log(error.request);
}else{
// Something happened in setting up the request that triggered an Error
console.log('Error', error.message);
}
console.log(error.config);
});
也可以使用 validateStatus 配置选项定义一个自定义 HTTP 状态码的错误范围。
axios.get('/user/12345', {
validateStatus:function(status){
returnstatus <500;// Reject only if the status code is greater than or equal to 500
}
})