axios使用拦截器统一处理所有的http请求的方法


Posted in Javascript onNovember 02, 2018

axios使用拦截器

  在请求或响应被 then 或 catch 处理前拦截它们。

http request拦截器

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  return config;
 }, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
 });

http respones拦截器

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response;
 }, function (error) {
  // 对响应错误做点什么
  return Promise.reject(error);
 });

移除拦截器

var myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);

为自定义axios实例添加拦截器

var instance = axios.create();
instance.interceptors.request.use(function () {/*...*/});

PS:下面看下axios拦截器使用

import axios from 'axios' // axios引用
import store from '../../store' // store引用
const serivce = axios.create({ // 创建服务
 baseURL: 'http://test.api.rujiaowang.net', // 基础路径
 timeout: 5000 // 请求延时
})
serivce.interceptors.request.use( // 请求拦截
 config => {
  if (store.getters.userToken) {
   config.headers['X-Token'] = store.getters.userToken
   config.headers['User-Type'] = store.getters.userType ? store.getters.userType : '' // 请求头中存放用户信息
   config.onUploadProgress = (progressEvent) => {
    var complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + '%'
    store.dispatch('setupLoadPercent', complete)
   }
  }
  return config
 },
 error => {
  return Promise.reject(error)
 }
)
serivce.interceptors.response.use( // 回复拦截,主要针对部分回掉数据状态码进行处理
 response => {
  return response
 },
 error => {
  return Promise.reject(error)
 }
)
export default serivce

总结

以上所述是小编给大家介绍的axios使用拦截器统一处理所有的http请求的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 单例/单体模式(Singleton)
Apr 07 Javascript
js实现简单的购物车有图有代码
May 26 Javascript
JS表格组件神器bootstrap table详解(基础版)
Dec 08 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
详解RequireJS按需加载样式文件
Apr 12 Javascript
理解 JavaScript EventEmitter
Mar 29 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
Aug 13 Javascript
vue-router启用history模式下的开发及非根目录部署方法
Dec 23 Javascript
JS实现提示框跟随鼠标移动
Aug 27 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
Jun 17 Javascript
使用vue构建多页面应用的示例
Oct 22 Javascript
vue实现与安卓、IOS交互的方法
Nov 02 #Javascript
解决iview多表头动态更改列元素发生的错误的方法
Nov 02 #Javascript
JavaScript 点击触发复制功能实例详解
Nov 02 #Javascript
微信小程序实现留言板(Storage)
Nov 02 #Javascript
微信小程序实现留言板功能
Nov 02 #Javascript
小程序实现留言板
Nov 02 #Javascript
js中的闭包实例展示
Nov 01 #Javascript
You might like
如何在PHP中使用Oracle数据库(3)
2006/10/09 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
初中生学习生活的自我评价
2013/11/20 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
《七律·长征》教学反思
2016/02/16 职场文书