目录
- 一、安装axios
- 二、创建文件夹
- 三、封装axios
- 1. 引入axios
- 2. 引入vuex
- 3. 引入vant
- 4. 引入我们的环境变量
- 5.创建axios实例
- 6. 添加请求拦截
- 7. 响应拦截
- 8. 导出封装的axios函数
- 四、api统一管理
- 1.引入我们封装的axios
- 2.使用async/await进行请求优化
- 3.导出
- 五、使用
一、安装axios
npm install axios --save-dev
二、创建文件夹
在根目录的src中创建一个http文件夹,用来存放我们封装的接口。
在http文件夹中创建request.js专门用来封装,api.js专门用来放置我们的接口请求。
三、封装axios
1. 引入axios
import axios from “axios”;
2. 引入vuex
import store from “@/store/index”;
3. 引入vant
import { Toast } from “vant”;
4. 引入我们的环境变量
import baseUrl from “@/config/index”;
5.创建axios实例
const instance = axios.create({
timeout: 5000,
baseUrl
})
6. 添加请求拦截
使用 axios实例.interceptors.request.use(成功回调,失败回调);
我们可以在请求拦截中开启loading动画,判断用户是否登录,以及携带token
instance.interceptors.request.use(config => {
Toast.loading({
message: '加载中...',
forbidClick: true,
loadingType: 'spinner',
});
if (store.state.token) {
config.headers.Authorization = store.state.token;
}
return config;
}, error => {
return Promise.reject(error);
})
7. 响应拦截
使用 axios实例.interceptors.response.use(成功回调,失败回调);
我们在响应拦截中,可以关闭loading动画,判断返回的状态码来做响应的操作
instance.interceptors.response.use(response => {
Toast.clear();
return response;
}, error => {
return Promise.reject(error);
})
8. 导出封装的axios函数
export default (url, method, params) => {
return instance({
url:url,
method:method,
params:params,
}).then(res => {
if (res.status >= 200 && res.status < 300) {
return res;
} else {
return Promise.reject(res.data);
}
}).catch(err => {
return Promise.reject(err);
})
}
四、api统一管理
1.引入我们封装的axios
import http from “./request”
2.使用async/await进行请求优化
async function getIndex(obj) {
let res = await http('url',"get",{id:1});
return res;
}
3.导出
export {
getIndex,
}
注意:导出多个的时候只能使用export,导出的时候函数中间使用逗号隔开
五、使用
比如我们在主页要使用这个接口
<template>
<div class="home">
</div>
</template>
<script>
import { getIndex } from "@/http/api";
export default {
data() {
return {};
},
mounted() {
getIndex().then((res) => {
console.log(res);
}).catch(err=>{
console.log(err)
});
},
};
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)