// axios二次封装
import axios from 'axios'
import qs from 'qs' /***
*判断环境变量区分接口的默认地址
*/
switch (process.env.NODE_ENV) {
case 'production':
axios.defaults.baseURL = 'http://api.zhouzha.cn'
break
case 'test' :
axios.defaults.baseURL = 'https://192.168.109:2000'
break
default :
axios.defaults.baseURL = 'http://127.0.0.1:3000'
} /**
* 设置超时时间和跨域是否允许携带凭证
*/
axios.defaults.timeout = 10000
// 跨域资源允许携带
axios.defaults.withCredentials = true /**
* 设置请求传递数据的格式(看服务器要求)
* x-www-form-urlencoded 格式 ==> xxx=xxx&xxx=xxx
* 一般是post请求
*/
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'
// qs.stringify() 将对象变成 xxx=xxx&xxx=xxx格式 qs.parse() 将xxx=xxx&xxx=xxx转换成对象
axios.defaults.transformRequest = data => qs.stringify(data) /**
* 请求拦截器
* TOKEN校验(JWT)
* 接收服务器返回token,存储到vuex/本地存储中,每一次向服务器发请求,我们应该把token带上
* 当token失效时,把本地服务器清除调,再从服务器取
*/
axios.interceptors.request.use((config) => {
// 携带token
const token = localStorage.getItem('token')
token && (config.headers.Authorization = token)
return config
}, error => {
return Promise.reject(error)
}) /**
* 响应拦截器
* 浏览器默认以2开头为成功,3开头为失败
*/
// 此设置一般不用设置 (设置以2或3开头为响应成功)
// axios.defaults.validateStatus = status => {
// // 自定义响应成功的http状态码
// return /^(2|3)\d{2}$/.test(status)
// } axios.interceptors.response.use(response => {
// 直接返回响应主体内容 (response里边还包含了data ,headers ,config ....)
return response.data
}, error => {
const { response } = error
if (response) {
// 服务器有返回结果
// 对不同状态码进行不同处理
switch (response.status) {
case 401 : // 当前请求需要用户验证,一般是未登录(权限)
// 进行一些操作,提示
break
case 403 : // 服务器已经解决请求,但是拒绝执行它 (一般是token过期,session过期)
localStorage.removeItem('token')
break
case 404 : // 请求失败,请求所希望得到的资源未被在服务器上发现 .找不到页面(地址错误)
break
}
return Promise.reject(error)
} else {
// 服务器没有返回结果 :原因一:服务器崩了 。原因二 :客户端没网
if (!window.navigator.onLine) {
// 断网处理:可以跳转断网页面
return
}
return Promise.reject(error)
}
}) export default axios

Vue Axios二次封装的更多相关文章

  1. 【vue】axios二次封装,更好的管理api接口和使用

    在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...

  2. 原生 Ajax 封装 和 Axios 二次 封装

    AJAX 异步的JavaScript与XML技术( Asynchronous JavaScript and XML ) Ajax 不需要任何浏览器插件,能在不更新整个页面的前提下维护数据,但需要用户允 ...

  3. axios 二次封装

    一般项目往往要对 axios 库进行二次封装,添加一些自定义配置和拦截器等 案例 ./service/axios.js 1234567891011121314151617181920212223242 ...

  4. typescript开发vue项目二次封装的axios用return Promise.reject(error) 返回异常,提示[Vue warn]: Error in v-on handler (Promise/async)

    二次封装axios时刻意服务端模拟了延迟返回数据的场景,用return Promise.reject(error) 返回异常,报如下错误, [Vue warn]: Error in v-on hand ...

  5. element el-table表格的vue组件二次封装(附表格高度自适应)

    基于vue的el-table表格二次封装组件方法 前言 在公司实习使用vue+element-ui框架进行前端开发,使用表格el-table较为多,有些业务逻辑比较相似,有些地方使用的重复性高,如果多 ...

  6. axios二次封装的几种方法

    一.用Class方法 import axios from "axios"; declare var Promise: any; export class Request { sta ...

  7. axios二次封装

    import axios from "axios" //请求拦截器 axios.interceptors.request.use(function (config) { retur ...

  8. vue+axios请求头封装

    import { mapMutations } from 'vuex' import axios from 'axios' import { Toast } from 'mint-ui'; impor ...

  9. 【uni-app】uni.request二次封装,更好的管理api接口和使用

    前言 之前写了一个Vue.js的axios二次封装(点击跳转),这次是uni-app,uni-app是基于vue.js框架的,我觉得是很好用的一个框架,而且一套代码编译那么多平台,非常节省成本,当然, ...

  10. vue项目中对axios的二次封装

    近来在使用vue重构公司m站时,使用了axios来进行数据的请求,由于项目的需要,对axios进行了二次封装,点击进入axios //引入axios import axios from 'axios' ...

随机推荐

  1. Istio(三):服务网格istio可观察性:Prometheus,Grafana,Zipkin,Kiali

    目录 一.模块概览 二.系统环境 三.可观察性 四.指标 4.1 代理级指标 4.2 服务级指标 4.3 控制平面度量 五.Prometheus 5.1 安装Prometheus 5.2 部署示例应用 ...

  2. 【web】自定义协议Protocol URL

    URL Protocol(自定义协议)可以让web页面调用本地exe程序,这个神奇的功能是怎么实现的呢? URL ProtocolURL Protocol,没错就是标题里所说的自定义协议.这玩意儿大家 ...

  3. 在kubernetes里使用seccomp限制容器的系统调用

    目录 一.系统环境 二.前言 三.系统调用简介 四.使用seccomp限制docker容器系统调用 五.在kubernetes里使用seccomp限制容器的系统调用 5.1 配置seccomp允许po ...

  4. kali linux主题美化

    Kali 主题美化 先放张安装了主题的图片: 执行下面命令下载主题文件: git clone https://github.com/daniruiz/flat-remix-gtk.git git cl ...

  5. 微信实名认证申请单报错:请求中含有未在API文档中定义的参数

    完整错误: {"code":"PARAM_ERROR","detail":{"location":null," ...

  6. 2 分钟,了解 4 个极为有用的 MetricsQL 函数

    夜莺社区的朋友如果问时序库的选型,我一般都会推荐 VictoriaMetrics,除了其性能.稳定性.集群扩展能力之外,VictoriaMetrics 还扩展了 PromQL,提供了 MetricsQ ...

  7. springboot拦截器@resource注解注入为null解决方案 拦截适配配置

    springboot拦截器@resource注解注入为null解决方案  拦截适配配置 为什么@resource注入为nullinteceptor在springcontext之前加载,注入必然是nul ...

  8. Arduino实现温湿度传感器以及数据上传到云(乐维互联)

    0 准备材料 0.1 ESP-01S 引脚及定义 官方定义: 序号 pin 功能 1 GND 地线 2 IO0/GPIO0 工作模式选择:①悬空:Flash Boot,工作模式 ②下拉:UART Do ...

  9. 开源一个反sql注入的asp.net core中间件

    现在公安有一个专门负责信息安全的部门,前几天公司就收到了一个整改通知,防sql注入的整改. 我们公司开始对网站进行了简单的测试,普通的sql都能检测出来. 但还是被发了整改通知,肯定有些sql注入的方 ...

  10. Django项目实现分页返回,结合forloop实现编号递增

    需要导入Paginator包 from django.core.paginator import Paginator 实现步骤: 需要设置每页大小 需要获取每页的页码, 查询对应的数据,提供给Pagi ...