详解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中:lt选择器用法实例
Dec 29 Javascript
第九章之路径分页标签与徽章组件
Apr 25 Javascript
基于jQuery的checkbox全选问题分析
Nov 18 Javascript
Angular中使用$watch监听object属性值的变化(详解)
Apr 24 Javascript
Node.js学习之地址解析模块URL的使用详解
Sep 28 Javascript
JavaScript中Object基础内部方法图
Feb 05 Javascript
vue-cli3 karma单元测试的实现
Jan 18 Javascript
JavaScript闭包与作用域链实例分析
Jan 21 Javascript
JS将时间秒转换成天小时分钟秒的字符串
Jul 10 Javascript
wx-charts 微信小程序图表插件的具体使用
Aug 18 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
Oct 30 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 Javascript
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 中include()与require()的对比
2006/10/09 PHP
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
初学Python函数的笔记整理
2015/04/07 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
python在控制台输出进度条的方法
2015/06/20 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
Python如何计算语句执行时间
2019/11/22 Python
详解python的super()的作用和原理
2020/10/29 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
副职竞争上岗演讲稿
2014/05/12 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
女性健康讲座主持词
2015/07/04 职场文书
2019邀请函格式及范文
2019/05/20 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android