Vue+axios实现统一接口管理的方法


Posted in Javascript onJuly 23, 2018

通过axios请求接口已经很简单了,但最近在做一个vue项目,想着把axios请求再封装一下,这样api就可以只在一处配置成方法,在使用的时候直接调用这个方法。

但咱们不用每个接口都定义成一个??碌?xios请求方法,既然是想简单点,就尽量只在一处完成简单的配置。

1、配置api接口

将同一模块的接口放在一个文件下,比如我在src的services下定义了一个global.js作为全局服务的配置,在它里面配置的api可以作为这个服务的方法。

比如:

Vue+axios实现统一接口管理的方法

name字段将作为之后被调用的方法名,但这个只是一个单纯的对象,现在我们定义方法将它转为方法。

2、将接口配置的数组对象转化为方法

import axios from "axios";
const withAxios = apiConfig => {
 const serviceMap = {};
 apiConfig.map(({ name, url, method }) => {
 serviceMap[name] = async function(data = {}) {
  let key = "params";
  if (method === "post" || method === "put") {
  key = "data";
  }
  return axios({
  method,
  url: "/api" + url,
  [key]: data
  });
 };
 });
 return serviceMap;
};
export default withAxios;

我们在utils下定义了一个通用的方法withAxios,这个方法的作用是将api配置文件转化为包含方法的一个对象。

3、在api配置文件中使用withAxios

import withAxios from "../utils/withAxios";
const apiConfig = [
 {
 name: "userLogin",
 url: "/login",
 method: "get"
 },
 {
 name: "getUserInfo",
 url: "/login/user",
 method: "get"
 },
 {
 name: "getDeptList",
 url: "/login/department",
 method: "get"
 }
];
export default withAxios(apiConfig);

直接export出包装后的对象即可。

4、在vuex中使用

想在vuex中调用某个api,首先import刚才导出的对象

import GlobalService from "@/services/global";

在action中调用某个接口:

const { data } = await GlobalService.userLogin(payload);

这样就完事了。之后只需要配置-调用这么两步就可以完成接口调用。

5、axios的其他配置

我们可以在utils的withAxios中顺便对axios做一些通用的设置。

比如每次请求头中都自动带上鉴权:

axios.defaults.headers.common["Authorization"] = getCookie("jwt") || "";
// 注意:此处只会在web应用初始化时配置,在登录成功后需重新配置Authorization。

比如使用拦截器对返回对象做统一处理:

axios.interceptors.response.use(response => {
 const { data } = response;
 if (data.status === -2) {
 Vue.prototype.$Message.error(`无效的登录信息或登录已失效,请重新登录`);
 delCookie("jwt");
 router.push({ path: "/login" });
 }
 if (data.status === -1) {
 Vue.prototype.$Message.error(`发生错误[${data.message}]`);
 }
 return response;
});

总结

以上所述是小编给大家介绍的Vue+axios实现统一接口管理的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 Javascript
简单谈谈javascript代码复用模式
Jan 28 Javascript
微信小程序开发探究
Dec 27 Javascript
jQuery动态生成表格及右键菜单功能示例
Jan 13 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
Mar 09 Javascript
js实现图片加载淡入淡出效果
Apr 07 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 jQuery
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
Sep 02 Javascript
webpack4从0搭建组件库的实现
Nov 29 Javascript
js实现简单图片拖拽效果
Feb 22 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
Jul 23 #Javascript
js正则表达式校验指定字符串的方法
Jul 23 #Javascript
js中时间格式化的几种方法
Jul 22 #Javascript
详解vue axios二次封装
Jul 22 #Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
Jul 22 #Javascript
Angular中sweetalert弹框的基本使用教程
Jul 22 #Javascript
5分钟学会Vue动画效果(小结)
Jul 21 #Javascript
You might like
Email+URL的判断和自动转换函数
2006/10/09 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
yii上传文件或图片实例
2014/04/01 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Django 导出项目依赖库到 requirements.txt过程解析
2019/08/23 Python
python破解同事的压缩包密码
2020/10/14 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
新奇的小玩意:IWOOT
2016/07/21 全球购物
怎样写留学自荐信
2013/11/11 职场文书
医药专业应届毕业生求职信范文
2014/01/01 职场文书
驾驶员岗位职责
2014/01/29 职场文书
中学自我评价
2014/01/31 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
党支部鉴定意见
2015/06/02 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电
Java死锁的排查
2022/05/11 Java/Android