详解Vue中使用Axios拦截器


Posted in Javascript onApril 22, 2019

需求是拦截前端的网络请求和相应。

废话不多说,直接上干货。

详解Vue中使用Axios拦截器

我用的是vue-cli3所以这个config文件是我自己创建的。

先介绍env.js

//根据不同的环境更改不同的baseUrl
let baseUrl = '';
 
//开发环境下
if (process.env.NODE_ENV == 'development') {
  baseUrl = '';
 
} else if (process.env.NODE_ENV == 'production') {
  baseUrl = '生产地址';
}
 
export {
  baseUrl,//导出baseUrl

在这里我首先设置了开发环境和生产环境的地址,并向外抛出。

在看一下axios.js

import {
  baseUrl, //引入baseUrl
} from "../config/env";
import axios from 'axios';
import qs from 'qs';
//引入vuex的js文件
import vuex from '../src/store/index';
 
// 创建 axios 实例
let service = axios.create({
  baseUrl: baseUrl,//请求前缀
  timeout: 20000, // 请求超时时间
  crossDomain: true,//设置cross跨域
  withCredentials: true//设置cross跨域 并设置访问权限 允许跨域携带cookie信息
})
 
// 设置 post 默认 Content-Type
service.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
 
// 添加请求拦截器
service.interceptors.request.use(
 
  (config) => {
    // console.log()
    //下面的代码是如何在拦截器中调用vuex管理状态。
    //我这里主要是做了一个蒙层的遮盖
    // vuex.$store.commit('OPEN_LOADING');
 
 
    //判断请求方式是否为POST,进行转换格式
    config.method === 'post'
      ? config.data = qs.stringify({...config.data})
      : config.params = {...config.params};
    // 请求发送前进行处理
    return config
  },
  (error) => {
    // 请求错误处理
    return Promise.reject(error)
  }
)
 
// 添加响应拦截器
service.interceptors.response.use(
  (response) => {
    let { data } = response;
    return data
  },
  (error) => {
    let info = {},
      { status, statusText, data } = error.response
 
    if (!error.response) {
      info = {
        code: 5000,
        msg: 'Network Error'
      }
    } else {
      // 此处整理错误信息格式
      info = {
        code: status,
        data: data,
        msg: statusText
      }
    }
  }
)
 
/**
 * 向外抛出service
 */
export default service

最后将这个axios.js文件引入main.js中,并将引入的axios挂载到Vue实例上就ok了。

完美!如有不对的地方还请各位大佬指点,万分感谢。

踩过的坑:

怎么在axios拦截器中使用vuex,首先我们要引入vuex的js文件,然后就可以用了,就这么简单。

以上所述是小编给大家介绍的Vue使用Axios拦截器详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
在视频前插入广告
Nov 20 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
Jan 11 Javascript
js禁止回车提交表单的示例代码
Dec 23 Javascript
jQuery简易图片放大特效示例代码
Jun 09 Javascript
JavaScript及jquey实现多个数组的合并操作
Sep 06 Javascript
JavaScript跨域方法汇总
Oct 16 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
Sep 20 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
Jul 24 Javascript
js 提取某()特殊字符串长度的实例
Dec 06 Javascript
VUE脚手架具体使用方法
May 20 Javascript
Vuex新手的理解与使用详解
May 31 Javascript
JQuery省市联动效果实现过程详解
May 08 jQuery
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
Apr 22 #Javascript
vue 项目build错误异常的解决方法
Apr 22 #Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 #Javascript
今天,小程序正式支持 SVG
Apr 20 #Javascript
详解Vue中组件的缓存
Apr 20 #Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 #Javascript
优雅地使用loading(推荐)
Apr 20 #Javascript
You might like
PHP+DBM的同学录程序(2)
2006/10/09 PHP
php实现简单的MVC框架实例
2015/09/23 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
js 手机号码合法性验证代码集合
2012/09/29 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
Node.js学习入门
2017/01/03 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
2017/02/23 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
9种python web 程序的部署方式小结
2014/06/30 Python
举例介绍Python中的25个隐藏特性
2015/03/30 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python语言描述随机梯度下降法
2018/01/04 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
python读取和保存图片5种方法对比
2018/09/12 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
会议接待欢迎词
2014/01/12 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书