具体的接口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. jpa hibernate mybatis

    jpa: entityManagerFactory: org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean hibern ...

  2. java特殊运算符

    按位运算符 定义:按位运算符是来操作整数基本数据类型中的单个“比特”(bit),即二进制位,位运算符会对两个参数中对应的位执行布尔代数运算,并最终生成一个结果. 分类:与(&).或(|).异或 ...

  3. MongoDB与mysql的对比

    1.与Mql对照 MySQL MongoDB 说明 mysqld mongod 服务器守护进程 mysql mongo 客户端工具 mysqldump mongodump 逻辑备份工具 mysql m ...

  4. 了解一下urlencode()函数

    urlencode()函数 在PHP官方网站中的解释如下: 编码 URL 字符串——就是对特殊字符进行编码转移(.  _  -  除外): string urlencode ( string $str ...

  5. 线程同步synchronized理解

    Synchronized 理解 用法:1.同步方法.2.同步静态方法.3同步代码块. 理解Synchronized 的关键是“锁” (原理在最后) 同步代码有“锁”者执行.所谓的锁必须是同一个.静态的 ...

  6. Android Studio在Make Project时下载Grandle特别慢

    SDK下载完成了,建个工程, 又蒙了: Server returned HTTP response code: 502 for URL: https://services.gradle.org/dis ...

  7. Android 中布局的优化措施都有哪些?

    1.尽可能减少布局的嵌套层级可以使用 sdk 提供的 hierarchyviewer 工具分析视图树,帮助我们发现没有用到的布局.2.不用设置不必要的背景,避免过度绘制比如父控件设置了背景色,子控件完 ...

  8. 如何保存 Activity 的状态?

    Activity 的状态通常情况下系统会自动保存的,只有当我们需要保存额外的数据时才需要使用到这样的功能.一般来说, 调用 onPause()和 onStop()方法后的 activity 实例仍然存 ...

  9. GO自定义类型与指针

    指针 定义:将地址形象化的称为“指针”.将地址形象化的称为“指针”.意思是通过它能找到以它为地址的内存单元.一个指针变量指向了一个值的内存地址.意思是通过它能找到以它为地址的内存单元.一个指针变量指向 ...

  10. Go语言程序结构

    注意:Go语言源码文件编码格式必须是 UTF-8 格式,否则会导致编译器出错. 1.语言变量 a) 指定变量类型,声明后若不赋值,使用默认值. var name string b) 根据值自行判定变量 ...