详解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 相关文章推荐
用jquery统计子菜单的条数示例代码
Oct 18 Javascript
js switch case default 的用法示例介绍
Oct 23 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
Jquery修改页面标题title其它JS失效的解决方法
Oct 31 Javascript
Javascript常用字符串判断函数代码分享
Dec 08 Javascript
js+html5绘制图片到canvas的方法
Jun 05 Javascript
jquery动感漂浮导航菜单代码分享
Apr 15 Javascript
D3.js实现直方图的方法详解
Sep 25 Javascript
Angular实现表单验证功能
Nov 13 Javascript
js中this对象用法分析
Jan 05 Javascript
更优雅的微信小程序骨架屏实现详解
Aug 07 Javascript
vue实现Toast组件轻提示
Apr 10 Vue.js
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 生成饼图 三维饼图
2009/09/28 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
jQuery擦除插件eraser使用方法详解
2020/01/11 jQuery
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
Python编程之string相关操作实例详解
2017/07/22 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
python装饰器常见使用方法分析
2019/06/26 Python
python sleep和wait对比总结
2021/02/03 Python
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
工厂实习感言
2014/01/14 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
小升初自荐信范文
2015/03/05 职场文书
计算机实训心得体会
2016/01/14 职场文书
详解php中流行的rpc框架
2021/05/29 PHP
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL