我是靠谱客的博主 安静月饼,这篇文章主要介绍vue项目axios封装使用axios 封装使用,现在分享给大家,希望可以做个参考。

文章目录

  • axios 封装使用
    • 判断是否为`Promise`
    • 项目封装
    • 拦截器

axios 封装使用

判断是否为Promise

Axios.get() instanceof Promise返回值是true

所以在封装axios时,不要在写成以下方式了

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
getuser(params) { return new Promise((resolve, reject) => { axios .post("/user", { ...params }) .then(data => { resolve(data); }) .catch(error => { resolve(error); }); }); }

直接这样写就可以,没必要写一些冗余代码

复制代码
1
2
3
4
getuser(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
21
import { 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
3
import serviceManger from "@/server/index.js"; Vue.prototype.$serviceManger = serviceManger; // 其中$xx为新命的名。全局引入

使用时,调用

复制代码
1
2
3
4
this.$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
25
import { 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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部