vue如何封装axios
时间: 2023-11-07 12:52:18 浏览: 97
在Vue中封装axios通常有两种方法。第一种方法是通过创建一个单独的文件来封装axios,并使用axios的拦截器、全局配置等功能。这样可以使代码更加清晰,便于维护和扩展。第二种方法是将axios挂载到Vue的原型上,使其成为全局变量,方便在各个组件中使用。
方法一:
在项目根目录下创建一个名为vue.config.js的文件,代码如下所示:
```javascript
const axios = require('axios');
module.exports = {
devServer: {
// ...
},
// ...
configureWebpack: {
// ...
},
// ...
// 封装axios
chainWebpack: config => {
config.resolve.alias
.set('api', '@/api')
.set('utils', '@/utils');
},
pluginOptions: {
// ...
}
}
```
然后,在src/api目录下创建一个名为http.js的文件,代码如下所示:
```javascript
import axios from 'axios';
const instance = axios.create({
baseURL: 'https://api.example.com', // 设置请求的基础URL
timeout: 5000 // 设置请求超时时间
});
// 请求拦截器
instance.interceptors.request.use(config => {
// 可以在请求发送前对请求进行处理,如添加token等
return config;
}, error => {
return Promise.reject(error);
});
// 响应拦截器
instance.interceptors.response.use(response => {
// 可以在接收到响应后对响应进行处理,如对返回的数据进行格式化等
return response.data;
}, error => {
return Promise.reject(error);
});
export default instance;
```
最后,在需要使用axios的地方引入http.js文件,如下所示:
```javascript
import axios from '@/api/http';
// 使用axios发送请求
axios.get('/user').then(res => {
console.log(res);
}).catch(err => {
console.error(err);
});
```
方法二:
在src/main.js文件中添加如下代码:
```javascript
import Vue from 'vue';
import axios from 'axios';
Vue.prototype.$http = axios;```
这样就将axios挂载到Vue的原型上,可以在任意组件中使用this.$http发送请求。
阅读全文