具体的接口api模块,例如authorization.js

import axios from '../axiosWrapper'

let prefix = process.env.API_ROOT

// 查询权限管理列表数据
export const queryAuthTableList = (params) => {
return axios.get(`${prefix}/manager/space/relation/list?spaceId=${params.spaceId}`);
}
// 修改权限人
export const editAuthUsers = (params) => {
return axios.post(`${prefix}/manager/space/relation/edit`, params);
}

引入各个业务模块 api.js

import * as common from './modules/commonApi'
import * as chart from './modules/chartApi'
import * as manage from './modules/manageApi'
import * as dashboard from './modules/tagDashboardApi'
import * as auth from './modules/authorizationApi'
import * as space from './modules/spaceApi'
import * as problem from './modules/problemViewApi' export default {
common,
chart,
manage,
dashboard,
auth,
space,
problem
} 统一封装axios,axiosWrapper.js:
import axios from 'axios';
import Vue from 'vue'
import store from './../store'
import { Message } from 'element-ui'
let _this = new Vue();
// Add a request interceptor
axios.interceptors.request.use(function (config) {
// Do something before request is sent
config.withCredentials = true;
config.headers = config.headers || {};
let spaceId = store.state.common.spaceId
if( spaceId !== null && spaceId !== '' ){
config.headers['spaceId'] = spaceId;
}
config.headers['X-Requested-With'] = 'XMLHttpRequest';
config.headers['Access-Control-Allow-Origin'] = '*';
return config;
}, function (error) {
// Do something with request error
return Promise.reject(error);
}); // Add a response interceptor
axios.interceptors.response.use(function (response) {
// Do something with response data
//用户如果未登录,则跳转到登录页面
if (response.data.redirect) {
_this.$message({
showClose: true,
type: 'error',
message: `请重新登录!`
})
if (self === top) { // 当前窗口和顶层窗口是同一个,说明在一个框架中
// window.location.href = response.data.redirect;
} else {
window.parent.postMessage({ type: "not_login", url: response.data.redirect }, "*")
// window.top.postMessage({type:'not_login',url:redirectUrl},"*")
}
} else {
// 统一处理response状态码及错误
let responseData = response.data
if (responseData.code === 0 || responseData.code === 200 || responseData.status === 200) {
// Message.closeAll()
// console.log('axios', responseData.code)
return responseData;
}else{
Message.closeAll()
if(responseData.msg){
_this.$message({
showClose: true,
type: 'error',
message: `${responseData.msg}!`
});
}
return responseData;
}
}
}, function (error) {
// Do something with response error
Message.closeAll()
console.log('error.response', error.response)
let errorData = error.response.data
if(errorData.msg){
_this.$message({
showClose: true,
type: 'error',
message: `${error.response.data.msg}!`
});
}
return Promise.reject(error);
}); var http = axios.create({
timeout: 8000,
/*设置请求超时时间*/
baseURL: 'http://localhost:8080'
});
// Alter defaults after instance has been created
// http.defaults.headers.common['Authorization'] = ''; export default axios index.js暴露各个模块api入口:
import api from './api'

export default api

api接口统一封装的更多相关文章

  1. 循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理

    在前面随笔<循序渐进VUE+Element 前端应用开发(12)--- 整合ABP框架的前端登录处理>介绍了一个系统最初接触到的前端登录处理的实现,但往往对整个系统来说,一般会有很多业务对 ...

  2. Spring Boot 无侵入式 实现RESTful API接口统一JSON格式返回

    前言 现在我们做项目基本上中大型项目都是选择前后端分离,前后端分离已经成了一个趋势了,所以总这样·我们就要和前端约定统一的api 接口返回json 格式, 这样我们需要封装一个统一通用全局 模版api ...

  3. thinkphp api接口 统一结果返回处理类

    20210602 修正 wqy的笔记:http://www.upwqy.com/details/216.html 返回结果处理,归根结底 主要是有两点 数据结构和返回的数据类型 1.数据类型 :一般情 ...

  4. 小程序请求接口统一封装到一个js文件中

    在我们做小程序时,数据请求数据请求是避免不了的,然而我们用官方自带的请求方式,会给我们带来很多重复的工作,所以我就借鉴大神们的博客,写了一个简单的请求方式. 1.首先我们在utils中新建一个api. ...

  5. vue中Axios的封装和API接口的管理

    前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...

  6. C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试

    在上篇<C#开发微信门户及应用(22)-微信小店的开发和使用>里面介绍了一些微信小店的基础知识,以及对应的对象模型,本篇继续微信小店的主题,介绍其中API接口的封装和测试使用.微信小店的相 ...

  7. 在Winform混合式框架中整合外部API接口的调用

    在我们常规的业务处理中,一般内部处理的接口多数都是以数据库相关的,基于混合式开发的Winform开发框架,虽然在客户端调用的时候,一般选择也是基于Web API的调用,不过后端我们可能不仅仅是针对我们 ...

  8. 年轻人不讲武德,竟然重构出这么优雅后台 API 接口

    Hello,早上好,我是楼下小黑哥~ 最近偶然间在看到 Spring 官方文档的时候,新学到一个注解 @ControllerAdvice,并且成功使用这个注解重构我们项目的对外 API 接口,去除繁琐 ...

  9. 第三方库API接口

    第三方库API接口 InfluxDB提供了各种语言的Http API接口的封装.具体可以看这里: https://docs.influxdata.com/influxdb/v0.10/clients/ ...

随机推荐

  1. Hibernate与MyBaits的区别?

    (1)Hibernate是全自动,而myBatis是半自动,Hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成SQL.而myBat ...

  2. spark MLlib 概念 5: 余弦相似度(Cosine similarity)

    概述: 余弦相似度 是对两个向量相似度的描述,表现为两个向量的夹角的余弦值.当方向相同时(调度为0),余弦值为1,标识强相关:当相互垂直时(在线性代数里,两个维度垂直意味着他们相互独立),余弦值为0, ...

  3. 全面解读php-开发环境及配置

    一.版本控制软件 1.集中式 (CVS和 SVN) 中间有一个中央服务器,所有的客户机都会把版本信息上传到中央服务器里,版本信息只在中央服务器里保存,当我们去上传或者下载的时候 ,都是从中央服务器来连 ...

  4. 无界面上(linux)生成测试报告(3)

    无界面上(linux)生成测试报告 1.待jmx文件运行完成后,键入命令进入到jtl文件下: #cd testresult#bin目录下使用此命令,进入到jtl文件下 #jmeter -g pushG ...

  5. 47全排列II

    题目:给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入:[1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]] 来源:https://leetcode-cn.com ...

  6. flutter详解路由栈(二)

    前面,我们已经知道如何简单在路由栈中 push.pop 实例,然而,当遇到一些特殊的情况,这显然不能满足需求.学习 Android 的同学知道 Activity 的各种启动模式可以完成相应需求,Flu ...

  7. mybatis 动态SQL .2

    目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when,otherwise) 语句 5.动态SQL:tri ...

  8. C#使用NPOI读写excel

    本帖内容来自网络+自己稍作整理,已找不到原贴,侵删 个人比较习惯用NPOI操作excel,方便易理解.在宇宙第一IDE(笑)——VS2017中插入NPOI就很方便: 首先安装NPOI: 然后在.cs文 ...

  9. 完全分布式部署Hadoop

    完全分布式部署 Hadoop 分析: 1)准备 3 台客户机(关闭防火墙.静态 ip.主机名称) 2)安装 jdk 3)配置环境变量 4)安装 hadoop 5)配置环境变量 6)安装 ssh 7)配 ...

  10. sql语言(mysql)

    一.SQL语言 1.DDL (Data Definition Language) 数据库定义语言 2.DML(Data Manipulation Language) 数据库操作语言 3.DQL (Da ...