企业级Vue项目中axios的封装与使用
9 浏览量
更新于2024-08-30
1
收藏 117KB PDF 举报
"本文主要介绍了如何在企业级Vue项目中高效使用axios,通过创建和配置axios实例,以及设置请求和响应拦截器,实现接口请求的统一管理和优化。"
在大型Vue项目中,处理HTTP请求是必不可少的工作,而针对众多的接口,如果每个接口都单独创建axios实例,会导致代码冗余,不易维护。为了解决这个问题,企业级项目通常会将axios请求进行封装和抽离。以下是一个示例,展示了如何在request.js文件中进行配置:
首先,引入Vue和axios库:
```javascript
import Vue from 'vue';
import axios from 'axios';
```
接着,创建一个axios实例并设置基础URL和超时时间:
```javascript
const service = axios.create({
baseURL: '/user', // 基础地址
timeout: 6000 // 请求超时时间
});
```
然后,添加请求拦截器,用于处理如携带Token、防止浏览器缓存等问题:
```javascript
service.interceptors.request.use(config => {
const token = Vue.ls.get("ACCESS_TOKEN"); // 获取存储的Token
if (token) {
config.headers['X-Access-Token'] = token; // 设置请求头
}
if (config.method === 'get') {
config.params = {
_t: Date.parse(new Date()) / 1000, // 防止缓存,添加时间戳
...config.params
};
}
return config;
}, (error) => {
return Promise.reject(error);
});
```
在请求拦截器中,我们还可以做更多的预处理工作,例如校验权限、添加全局参数等。
接下来,设置响应拦截器来处理可能出现的错误情况:
```javascript
service.interceptors.response.use(
response => response,
error => {
const err = error;
if (err.response) {
switch (err.response.status) {
case 401:
console.log({ message: '系统提示', description: '未授权,请重新登录', duration: 4 });
break;
case 403:
console.log({ message: '系统提示', description: '拒绝访问' });
break;
case 404:
console.log({ message: '系统提示', description: '未找到资源' });
break;
// 其他错误状态处理...
}
}
return Promise.reject(err);
}
);
```
响应拦截器可以捕获并处理服务器返回的错误,例如401(未授权)、403(禁止访问)和404(未找到),以便给用户反馈或执行相应的操作。
最后,将这个配置好的axios实例导出,供其他组件或模块使用:
```javascript
export default service;
```
这样,在Vue项目中,只需要导入这个封装好的axios实例,就可以方便地发起HTTP请求,同时保持代码整洁,易于维护。通过这种方式,开发者可以专注于业务逻辑,而不用关心底层网络请求的细节。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-05-10 上传
2020-05-09 上传
2022-05-23 上传
2023-02-24 上传
172 浏览量
2022-09-04 上传
weixin_38562085
- 粉丝: 6
- 资源: 963
最新资源
- morphline-mr:MapReduce 与 Kite Morphline
- RestApi:laravel学习
- Laravel:Laravel框架5.7.29
- 围攻塔:sgdvxdrfgdrgdr
- MightyCal: Zope/Cocoon Calendar Product-开源
- Android-Project-01
- 用JavaScript路由正交图连接器
- Compiler
- 行业分类-设备装置-跨平台的多屏互动方法、装置及系统.zip
- qnotify:发送2b2t队列通知到电话!
- personaApp
- Bots:只是我所有机器人的一个项目
- Food_Website:响应式食品网站
- bbdoc64V112.zip
- crudASP
- python-LRU缓存.zip