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 相关文章推荐
js和jquery批量绑定事件传参数一(新猪猪原创)
Jun 23 Javascript
jquery validate在ie8下的bug解决方法
Nov 13 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
Aug 18 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
Jan 25 Javascript
xtemplate node.js 的使用方法实例解析
Aug 22 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
详解vue组件基础
May 04 Javascript
原生JS实现逼真的图片3D旋转效果详解
Feb 16 Javascript
jQuery提示框插件SweetAlert用法分析
Aug 05 jQuery
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 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
简单的php数据库操作类代码(增,删,改,查)
2013/04/08 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
PHP的PDO连接讲解
2019/01/24 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
Pytorch之contiguous的用法
2019/12/31 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
前端面试必备之html5的新特性
2017/09/05 HTML / CSS
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
医学护理毕业生自荐信
2013/11/07 职场文书
2013英文求职信模板范文
2013/11/15 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
关于环保的建议书
2014/05/12 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
《春酒》教学反思
2016/02/22 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
2022漫威和DC电影上映作品
2022/04/05 欧美动漫