vue中axios的二次封装的高级写法
时间: 2023-11-27 08:08:21 浏览: 39
很高兴回答你的问题!关于Vue中对axios进行二次封装的高级写法,我们可以采用拦截器(interceptor)的方式,对请求和响应进行处理,从而实现统一的处理逻辑,比如添加loading、token校验等等。下面是示例代码:
```javascript
import axios from 'axios';
import { Message } from 'element-ui';
const service = axios.create({
// 请求超时时间
timeout: 5000,
});
// 请求拦截器
service.interceptors.request.use(
config => {
// 添加loading
store.dispatch('SET_LOADING', true);
// token校验等其他逻辑
return config;
},
error => {
// 处理请求错误
return Promise.reject(error);
}
);
// 响应拦截器
service.interceptors.response.use(
response => {
// 隐藏loading
store.dispatch('SET_LOADING', false);
const res = response.data;
if (res.code !== 200) {
// 处理响应错误
Message.error(res.message || 'Error');
return Promise.reject(new Error(res.message || 'Error'));
} else {
return res;
}
},
error => {
// 隐藏loading
store.dispatch('SET_LOADING', false);
// 处理响应错误
Message.error(error.message || 'Error');
return Promise.reject(error);
}
);
export default service;
```
通过以上代码的实现,我们即可对axios进行二次封装,实现统一的处理逻辑,提高代码复用性和可维护性。希望能对您有所帮助!