Axios 中的拦截器可以分为请求拦截器和响应拦截器。
分别可以用于在发送请求或接收响应之前,对数据做额外转换、或其他操作。
由于 Axios 是支持 promise 的,所以拦截器的设置也参照了 Promise 中的 resolve 和 reject。
6-1.请求拦截器
一个简单的请求拦截器实例如下:
js
const resolveRequest = config => {
console.log(config)
return config
}
const rejectRequest = error => {
return Promise.reject(error)
}
axios.intercepters.request.use(resolveRequest, rejectRequest)我们简单的打印下请求拦截器中的 config:

另外,请求拦截器和响应拦截器,都是可以注销解绑的。以请求拦截器为例:
js
const requestInterceptor = axios.intercepters.request.use(resolveRequest, rejectRequest)
axios.intercepters.request.eject(requestInterceptor)6-2.响应拦截器
一个简单的响应拦截器示例如下:
js
const resolveResponse = response => {
console.log(response)
return response
}
const rejectResponse = error => {
return Promise.reject(error)
}
axios.intercepters.request.use(resolveResponse, rejectResponse)在前文中,介绍到了 config 中的 validateStatus 属性。它的默认配置是:
js
const defaultsConfig = {
validateStatus: function validateStatus(status) {
return status >= 200 && status < 300;
}
}那么可以推断出的是,当 http 状态码在 [200, 300) 之间的时候,Axios 会将响应当做成功响应。
那么也就是说 http 状态码在 [200, 300) 之间时,在响应拦截器中会命中 resolveResponse 回调函数。
其余 http 状态码则会命中 rejectResponse 回调函数。
另外,我们在此处也打印下响应拦截器中的 response:
