在使用axios发送请求时,可以通过设置拦截器来对请求或响应进行预处理。拦截器可以拦截请求的发送、响应的返回以及请求或响应的错误。
拦截器是通过axios的interceptors属性进行设置的,该属性包含了request、response和error三个属性,分别对应请求拦截器、响应拦截器和错误拦截器。
以下是一个使用axios拦截器的示例代码:
import axios from 'axios';
// 请求拦截器
axios.interceptors.request.use(
config => {
// 在发送请求之前做些什么
console.log('请求拦截器触发');
return config;
},
error => {
// 对请求错误做些什么
console.error(error);
return Promise.reject(error);
}
);
// 响应拦截器
axios.interceptors.response.use(
response => {
// 对响应数据做些什么
console.log('响应拦截器触发');
return response;
},
error => {
// 对响应错误做些什么
console.error(error);
return Promise.reject(error);
}
);
// 发送请求
axios.get('https://api.example.com/data')
.then(response => {
console.log('请求成功');
console.log(response.data);
})
.catch(error => {
console.error('请求失败');
console.error(error);
});
在上述代码中,请求拦截器通过axios.interceptors.request.use()方法进行设置,该方法接受两个参数:一个是请求成功时的回调函数,一个是请求失败时的回调函数。在请求拦截器中,可以对请求进行修改、添加请求头等操作。
响应拦截器通过axios.interceptors.response.use()方法进行设置,该方法也接受两个参数:一个是响应成功时的回调函数,一个是响应失败时的回调函数。在响应拦截器中,可以对响应进行修改、处理错误信息等操作。
通过设置拦截器,可以在请求或响应发送前或返回后对数据进行处理,实现一些通用的功能,如添加全局请求头、请求/响应日志记录等。