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 相关文章推荐
CSS JavaScript 实现菜单功能 改进版
Dec 09 Javascript
jQuery创建插件的代码分析
Apr 14 Javascript
js 绑定键盘鼠标事件示例代码
Feb 12 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
Apr 12 Javascript
angularJS 中input示例分享
Feb 09 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
Mar 24 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
Aug 24 Javascript
layui文件上传实现代码
May 20 Javascript
jquery写出PC端轮播图实例
Jan 26 jQuery
在Koa.js中实现文件上传的接口功能
Oct 08 Javascript
vue 组件销毁并重置的实现
Jan 13 Javascript
通过实例解析JavaScript for in及for of区别
Jun 15 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
与数据库连接
2006/10/09 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
Grid得到选择行数据的方法总结
2011/01/17 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
AngularJS入门心得之directive和controller通信过程
2016/01/25 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
python创建线程示例
2014/05/06 Python
Python实例之wxpython中Frame使用方法
2014/06/09 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
创建Django项目图文实例详解
2019/06/06 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
2019/11/20 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
欧洲最大的拼图游戏商店:JigsawPuzzle.co.uk
2018/07/04 全球购物
职工运动会邀请函
2014/01/19 职场文书
安全生产检查通报
2014/01/29 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
学生安全责任书
2014/04/15 职场文书
投标承诺书怎么写
2014/05/24 职场文书
防灾减灾活动总结
2014/08/30 职场文书
结婚老公保证书
2015/02/26 职场文书
中学生自我评价2015
2015/03/03 职场文书