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' ...
随机推荐
- Istio(三):服务网格istio可观察性:Prometheus,Grafana,Zipkin,Kiali
目录 一.模块概览 二.系统环境 三.可观察性 四.指标 4.1 代理级指标 4.2 服务级指标 4.3 控制平面度量 五.Prometheus 5.1 安装Prometheus 5.2 部署示例应用 ...
- 【web】自定义协议Protocol URL
URL Protocol(自定义协议)可以让web页面调用本地exe程序,这个神奇的功能是怎么实现的呢? URL ProtocolURL Protocol,没错就是标题里所说的自定义协议.这玩意儿大家 ...
- 在kubernetes里使用seccomp限制容器的系统调用
目录 一.系统环境 二.前言 三.系统调用简介 四.使用seccomp限制docker容器系统调用 五.在kubernetes里使用seccomp限制容器的系统调用 5.1 配置seccomp允许po ...
- kali linux主题美化
Kali 主题美化 先放张安装了主题的图片: 执行下面命令下载主题文件: git clone https://github.com/daniruiz/flat-remix-gtk.git git cl ...
- 微信实名认证申请单报错:请求中含有未在API文档中定义的参数
完整错误: {"code":"PARAM_ERROR","detail":{"location":null," ...
- 2 分钟,了解 4 个极为有用的 MetricsQL 函数
夜莺社区的朋友如果问时序库的选型,我一般都会推荐 VictoriaMetrics,除了其性能.稳定性.集群扩展能力之外,VictoriaMetrics 还扩展了 PromQL,提供了 MetricsQ ...
- springboot拦截器@resource注解注入为null解决方案 拦截适配配置
springboot拦截器@resource注解注入为null解决方案 拦截适配配置 为什么@resource注入为nullinteceptor在springcontext之前加载,注入必然是nul ...
- Arduino实现温湿度传感器以及数据上传到云(乐维互联)
0 准备材料 0.1 ESP-01S 引脚及定义 官方定义: 序号 pin 功能 1 GND 地线 2 IO0/GPIO0 工作模式选择:①悬空:Flash Boot,工作模式 ②下拉:UART Do ...
- 开源一个反sql注入的asp.net core中间件
现在公安有一个专门负责信息安全的部门,前几天公司就收到了一个整改通知,防sql注入的整改. 我们公司开始对网站进行了简单的测试,普通的sql都能检测出来. 但还是被发了整改通知,肯定有些sql注入的方 ...
- Django项目实现分页返回,结合forloop实现编号递增
需要导入Paginator包 from django.core.paginator import Paginator 实现步骤: 需要设置每页大小 需要获取每页的页码, 查询对应的数据,提供给Pagi ...