具体的接口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. 微信小程序 — 速学速查笔记

    1. 配置 配置全解析 project.config.json ( 项目配置文件 ) { // 文件描述 "description": "项目配置文件", // ...

  2. Div内容居中

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. Linux修改环境变量的4种方法

    转载 查看PATH:echo $PATH以添加mongodb server为列修改方法一:export PATH=/usr/local/mongodb/bin:$PATH//配置完后可以通过echo ...

  4. vue简单事件

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. OpenCV学习笔记(5)——颜色空间转换

    学习如歌对图像进行颜色空间转换,从BGR到灰度图,或者从BGR到HSV等 创建一个程序用来从一幅图像中获取某个特定颜色的物体 1.转换颜色空间 OpenCV中有超过150种进行颜色空间转化的方法,但是 ...

  6. leetcode 188. 买卖股票的最佳时机 IV

    参见 本题采用了第一列初始化后,从左侧向右开始递推的方式,但从上往下递推应该也成立,以后尝试一下 想写一个普适性的适用于n天交易k次持有j股的状态方程但是有问题:对于交易次数过多的情况数组会超出界限: ...

  7. C#客户端填充外部IE浏览器中网页文本(input)且不提交

    //引用COM组件//Microsoft HTML Object Library//Microsoft Internet Controls  记得改成x86 SHDocVw.ShellWindows ...

  8. Shell编程、part1

    1.shell简介 2. shell分类 3. 查看shell 4. 第一个shell脚本 5. shell编程常用命令 5.1 grep 5.2 cut 5.3 sort 5.4 uniq 5.5 ...

  9. JS实现网页选取截屏 保存+打印 功能(转)

    源码地址: 1.1 确定截图选取范围 用户在开始截图后,需要在页面上选取一个截图范围,并且可以直观的看到,类似如下效果: image 我们的选取范围就是鼠标开始按下的那个点到鼠标拖动然后松开的那个点之 ...

  10. jmeter-在beanshell里用代码提取参数

    接口返回json(response_data): { "Code":1, "Message":null, "Error":null, &qu ...