文章目录
- axios 封装使用
- 判断是否为`Promise`
- 项目封装
- 拦截器
axios 封装使用
判断是否为Promise
Axios.get() instanceof Promise
返回值是true
所以在封装axios时,不要在写成以下方式了
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15getuser(params) { return new Promise((resolve, reject) => { axios .post("/user", { ...params }) .then(data => { resolve(data); }) .catch(error => { resolve(error); }); }); }
直接这样写就可以,没必要写一些冗余代码
复制代码
1
2
3
4getuser(params) { return axios.post("/user", {...params}) }
项目封装
多axios实例项目
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21import { interceptorsResponseS, interceptorsResponseE } from "./axios-config"; import axios from "axios"; import { devopsIP } from "../../static/http.js"; import qs from "qs"; //axios 实例 const service = axios.create({ baseURL: "http://" + devopsIP }); // 添加响应拦截器 service.interceptors.response.use(interceptorsResponseS, interceptorsResponseE); class serviceManger { getuser(params) { return axios.post("/user", {...params}) } ... } export default new serviceManger();
main.js全局引入
复制代码
1
2
3import serviceManger from "@/server/index.js"; Vue.prototype.$serviceManger = serviceManger; // 其中$xx为新命的名。全局引入
使用时,调用
复制代码
1
2
3
4this.$serviceManger.geruser(params).then((data)=>{ ... })
axios的实例拦截器配置不会继承axios全局的拦截器
也就是说axios的service实例的拦截器配置时单独服务的,不会被全局拦截器影响。
拦截器
拦截器根据项目,有多种配置
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25import { Message } from "element-ui"; //响应拦截的两个方法 export function interceptorsResponseS(response) { // 对响应数据做点什么 const res = response.data; if (res.code !== "0") { Message({ type: "error", message: res.msg, duration: 5 * 1000 }); } else { return response.data; } } export function interceptorsResponseE(error) { // 对响应错误做点什么 Message({ type: "error", message: error.message, duration: 5 * 1000 }); }
最后
以上就是安静月饼最近收集整理的关于vue项目axios封装使用axios 封装使用的全部内容,更多相关vue项目axios封装使用axios内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复