05拦截器
拦截器
在请求或响应在被then和catch处理之前拦截它们
添加请求拦截器:
axios.interceptors.request.use(function (config) {
//在发送请求之前做什么
return config
},function (error){
//对请求错误做些什么
return Promise.reject(error)
})
添加响应拦截器:
axios.interceptors.request.use(function (response){
//2xx范围内的状态玛都会触发这个函数
//对相应数据做些什么
return response
}, function (error) {
//超出2xx范围的状态码都会触发这个函数
//对相应错误做些什么
return return Promise.reject(error)
})
移除拦截器:
const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);
自己定义的axios实例也可以添加拦截器:
const instance = axios.create();
instance.interceptors.request.use(function () {/*...*/});
错误处理
axios.get('/user/12345')
.catch(function (error) {
if(error.response) {
//请求成功且得到响应,但是状态码不是2xx
....
} else if(error.request){
//请求成功,没得到响应
//`error.request` 在浏览器中是 XMLHttpRequest 的实例
....
}else {
//请求的发送出问题了
console.log(error.message)
}
})
默认是超出2xx范围就错误,但是使用使用 validateStatus 配置选项,可以自定义抛出错误的 HTTP code。
axios.get('/api',{
//注意要把status作为参数传进去
validateStatus: function (status) {
return status < 500
}
})
可以对error对象进行toJSON获取更多错误信息:
axios.get('/user/12345')
.catch(function (error) {
console.log(error.toJSON());
});

浙公网安备 33010602011771号