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

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

1、配置api接口

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

比如:

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统一接口管理相关推荐

  1. vue axios 接口封装

    import axios from 'axios' // axios基本配置 axios.defaults.timeout = 5000 axios.defaults.baseURL = 'http: ...

  2. [vue] 使用vue开发过程你是怎么做接口管理的?

    [vue] 使用vue开发过程你是怎么做接口管理的? 创建一个request.js用于封装axios,在 src/api/request,设置拦截器统一处理请求和相应.封装 axios:request ...

  3. ASP.NET Core微服务(四)——【静态vue使用axios解析接口】

    ASP.NET Core微服务(二)--[ASP.NET Core Swagger配置]: 环境:win10专业版+vs2019+sqlserver2014/2019+vsCode+在线资源 boot ...

  4. 统一身份管理平台IAM单点登录流程及第三方接口设计方案

    #统一身份管理平台IAM 很多企业都有多个办公系统,账号.密码.角色.权限等均需要单独设置且不能实现统一管理. 统一身份认证管理系统IAM,我认为有以下三个优点: 建立统一的用户管理.身份配给和身份认 ...

  5. 多渠道整合开始NGBOSS第一步——TmaxSoft谈运营商统一接口平台建设和管理

    多渠道整合开始NGBOSS第一步--张东 NGBOSS是中国移动提出的新一代业务运营支撑网的总称,它包含总部和省公司两级的系统,并包括现有的BOSS.客服.渠道管理.经营分析.BOSS网管系统.DSM ...

  6. vue中使用axios请求接口,请求会发送两次

    vue中使用axios请求接口,请求会发送两次的问题 浏览器分为简单请求以及非简单请求: 解决方案: 跨域请求需要先发一次Option预请求,OPTIONS是检验是否允许跨域的,如果不希望OPTION ...

  7. vue考试系统后台管理项目-接口封装调用

    上一篇文章 : vue考试系统后台管理项目-登录.记住密码功能_船长在船上的博客-CSDN博客 考试系统后台管理项目介绍: 技术选型:Vue2.0+Element-ui 项目功能介绍: 账户信息模块: ...

  8. 前端项目的接口管理方案----构思

    一般来讲,现在百分之90的开发方式都是前后端分离,通俗来讲就是服务端提供一个http的REST API,前端同学去调用服务端的接口进行交互. 因此就衍生出请求代码的各类封装,但是网上的开发者从来就没有 ...

  9. vue连接后端本地接口_详解vue配置后台接口方式

    详解vue配置后台接口方式 在vueAdmin项目中有两种方式配置后端接口的方式,在此做下记录 第一种(代理方式) 在工程目录下 > config > index.js - 修改为如下配置 ...

最新文章

  1. Modulus 正式开放 —— Node.js 应用托管平台
  2. TransactionScope只要一个操作失败,它会自动回滚,Complete表示事务完成
  3. 计算机教育的需求,我国教育信息化市场需求分析
  4. 第二个mysql怎么装_Linux下安装两个MySQL的方法
  5. 如何采集指定年份的poi_房价关键影响因素分析:从数据采集到建模全过程
  6. 华为电视鸿蒙系统好用吗,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  7. python序列符号_Python中的文本和字节序列
  8. oc开源应用_失眠:一款开源应用,可根据睡眠周期告诉您何时入睡
  9. oracle数据库、数据表的创建与管理 实验笔记二
  10. Android中libs目录下armeabi和armeabi-v7a的区别
  11. 再见,前端!别更新了,我是学不动了
  12. 基于HTML5的WebGL实现的2D3D迷宫小游戏
  13. 为什么我 11 岁的儿子说要放弃编程,却又转战 Python
  14. Android Native Hook工具
  15. G - Ordering Tasks(拓补排序)
  16. 设计模式微课版来啦——《设计模式(第2版)》
  17. wireshark win7无响应
  18. MATLAB数据分析(插值运算和曲线拟合)
  19. 【MySQL】作业一
  20. pikachu站点所有问题

热门文章

  1. BugkuCTF-Reverse题mobile1(gctf)
  2. php程序里的configini_程序员手册 修改php.ini的几种方法
  3. 判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】(C语言)
  4. 微信收款音响s3服务器断开,微信收款音响s2和s3有什么区别
  5. JavaScript学习笔记:常量,枚举,宏定义
  6. elementui 上传七牛_element ui使用上传组件上传文件到七牛(qiniu-js)
  7. c java 开发效率高_Java 的开发效率究竟比 C++ 高在哪里?
  8. cad2014打开文件崩溃_CAD玩的再牛,崩溃了咋办?
  9. python对图像二值化_python如何二值化图像
  10. linux java 获取路径怎么写_linux中java获取路径怎么写?