Vue Axios二次封装
// 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二次封装的更多相关文章
- 【vue】axios二次封装,更好的管理api接口和使用
在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧.而axios的封装也是非常的多,下面的封装其实跟百度上搜出来的axios封装或者axios二次封装区别不 ...
- 原生 Ajax 封装 和 Axios 二次 封装
AJAX 异步的JavaScript与XML技术( Asynchronous JavaScript and XML ) Ajax 不需要任何浏览器插件,能在不更新整个页面的前提下维护数据,但需要用户允 ...
- axios 二次封装
一般项目往往要对 axios 库进行二次封装,添加一些自定义配置和拦截器等 案例 ./service/axios.js 1234567891011121314151617181920212223242 ...
- 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 ...
- element el-table表格的vue组件二次封装(附表格高度自适应)
基于vue的el-table表格二次封装组件方法 前言 在公司实习使用vue+element-ui框架进行前端开发,使用表格el-table较为多,有些业务逻辑比较相似,有些地方使用的重复性高,如果多 ...
- axios二次封装的几种方法
一.用Class方法 import axios from "axios"; declare var Promise: any; export class Request { sta ...
- axios二次封装
import axios from "axios" //请求拦截器 axios.interceptors.request.use(function (config) { retur ...
- vue+axios请求头封装
import { mapMutations } from 'vuex' import axios from 'axios' import { Toast } from 'mint-ui'; impor ...
- 【uni-app】uni.request二次封装,更好的管理api接口和使用
前言 之前写了一个Vue.js的axios二次封装(点击跳转),这次是uni-app,uni-app是基于vue.js框架的,我觉得是很好用的一个框架,而且一套代码编译那么多平台,非常节省成本,当然, ...
- vue项目中对axios的二次封装
近来在使用vue重构公司m站时,使用了axios来进行数据的请求,由于项目的需要,对axios进行了二次封装,点击进入axios //引入axios import axios from 'axios' ...
随机推荐
- 基于 ESP8266_RTOS_SDK 实现声控灯
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdint.h&g ...
- 原型工具--canva可画
Canva 是一个功能强大的在线设计平台,提供了丰富的设计工具和素材,包括原型设计.尽管 Canva 在原型设计方面并不像专门的原型设计工具(如Sketch.Figma.Adobe XD等)那样功能全 ...
- 对于UITableView和UIImageView的DrawRect重写之后的影响
一.继承 UITableView和UIImageView , 重写 DrawRect 方法,然后里面留空 ImageView @implementation DrawImageView - (void ...
- 通过钩子函数+Traceid实现Flask链路追踪
背景 在flask web中我们通常需要一个traceid作为调用参数传递给全链路各个调用函数 需要针对一次请求创建一个唯一的traceid:这里用uuid去简化代替 我们需要保证traceid不被污 ...
- k8s——集群环境问题合集
创建集群 k8s集群创建 集群环境问题合集 重置master节点 kubeadm reset -f # -f 强制重置 可选 重置node节点 # 当你的master节点重置后,node节点需要重新加 ...
- P7959 [COCI2014-2015#6] WTF 题解
P7959 [COCI2014-2015#6] WTF 题解 呃,是一道 DP 题 说实话,原题实际上是不要输出一种方法的--但是似乎放这道题的人想增加一点难度? 这里有两种做法,但都是 DP. 预备 ...
- Maven 指令 mvn:dependency:tree 查看依赖
一.指令指导文档: 官方文档:https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html https://maven ...
- 连续段 dp - 状态转移时依赖相邻元素的序列计数问题
引入 在一类序列计数问题中,状态转移的过程可能与相邻的已插入元素的具体信息相关. 这类问题通常的特点是,如果只考虑在序列的一侧插入,问题将容易解决. 枚举插入顺序的复杂度通常难以接受,转移时枚举插入位 ...
- Angular 集成 StreamSaver
应用场景: 实现目标: 在网页端实现大文件(文件大小 >= 2 G) 断点续传 实际方案: 发送多次请求, 每次请求一部分文件数据, 然后通过续写将文件数据全部写入. 难点: 无法实现文件续写, ...
- 洛谷 P4913 二叉树深度
题目链接:二叉树深度 思路 存储二叉树的各个节点并递归搜索二叉树深度. 题解 #include <bits/stdc++.h> using namespace std; #define l ...