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 相关文章推荐
javascript在事件监听方面的兼容性小结
Apr 07 Javascript
javascript最基本的函数汇总
Jun 25 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
Sep 04 Javascript
移动端脚本框架Hammer.js
Dec 15 Javascript
JS中使用正则表达式g模式和非g模式的区别
Apr 01 Javascript
详解angularJs指令的3种绑定策略
Apr 13 Javascript
浅谈vuex 闲置状态重置方案
Jan 04 Javascript
Vue.js实现备忘录功能
Jun 26 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
Vue 权限控制的两种方法(路由验证)
Aug 16 Javascript
js 动态校验开始结束时间的实现代码
May 25 Javascript
vue+echarts实现多条折线图
Mar 21 Vue.js
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
一个odbc连mssql分页的类
2006/10/09 PHP
php获取参数的几种方法总结
2014/02/18 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
做网页的一些技巧
2007/02/01 Javascript
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
python中子类调用父类函数的方法示例
2017/08/18 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
高级护理实习生自荐信
2013/09/28 职场文书
财务会计专业毕业生自荐信
2013/10/02 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python