请求拦截器的作用是在请求发送前进行一些操作,例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易。
关于拦截,这里只说原理,前端的请求,最终还是离不开 ajax,像vue 的 vue-resource 、axios,都只是对ajax进行了统一的封装,它暴露出来的拦截器,其实就是写了一个方法,把ajax写在这个方法里面,(我们先说请求拦截器哈)在执行这个方法的时候,先将请求时要添加给请求头的那些数据(token、后端要的加密码…具体要看实际情况)先执行一遍,都赋值给一个变量,然后再统一传给ajax,接下来就是执行ajax,这就是所谓的请求拦截,其实就是先执行要添加的数据,然后再执行ajax,如果把这个添加数据的过程抽出来,就成了所谓的请求拦截器;
axios.interceptors.request.use(
config =>{
// 在发送请求之前做些什么:headers添加token
config.headers['token'] = 'c5d1b483-18c8-4690-b829-48b8f525f527';
loading
Toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
mask: false, // 是否显示遮罩层
message: '数据加载中...',
});
// 特定接口不显示数据加载中提示
// if (config.url.includes('/api/mobile/index.php?w=member_favorites&t=favorites_add')) {
// // 清除加载动画
// Toast.clear();
// } else {
// Toast.loading({
// duration: 0, // 持续展示 toast
// forbidClick: true, // 禁用背景点击
// mask: false, // 是否显示遮罩层
// message: '数据加载中...',
// });
// }
return config;
},
error => {
// 对请求错误做些什么
return Promise.reject(error);
}
)