详解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 相关文章推荐
列表内容的选择
Jun 30 Javascript
JavaScript库 开发规则
Jan 31 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
基于Angularjs实现分页功能
May 30 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
JQuery学习总结【一】
Dec 01 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
深入理解JS异步编程-Promise
Jun 03 Javascript
Node.js操作MongoDB数据库实例分析
Jan 19 Javascript
微信小程序的引导页实现代码
Jun 24 Javascript
JavaScript 事件代理需要注意的地方
Sep 08 Javascript
vue-element-admin项目导入和导出的实现
May 21 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函数和特点
2013/08/08 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
微信小程序实现动态列表项的顺序加载动画
2019/07/25 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
基于vue的video播放器的实现示例
2021/02/19 Vue.js
python的常见命令注入威胁
2013/02/18 Python
python逐行读取文件内容的三种方法
2014/01/20 Python
python中redis的安装和使用
2016/12/04 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
学python最电脑配置有要求么
2020/07/05 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
Melissa香港官网:MDreams
2016/07/01 全球购物
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
跟单文员的岗位职责
2013/11/14 职场文书
《雨霖铃》听课反思
2014/02/13 职场文书
自我鉴定书
2014/03/24 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
2015年党小组工作总结
2015/05/26 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android