vue axios请求拦截实例代码


Posted in Javascript onMarch 29, 2018

axios 简介

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:

从浏览器中创建 XMLHttpRequest
从 node.js 发出 http 请求
支持 Promise API
拦截请求和响应
转换请求和响应数据
取消请求
自动转换JSON数据
客户端支持防止 CSRF/XSRF

下面代码给大家介绍vue axios 请求拦截,具体代码如下所示:

import axios from 'axios';//引入axios依赖
import { Message } from 'element-ui';
import Cookies from 'js-cookie'; //引入cookie操作依赖
import router from '@/router/index'//引入路由对象
axios.defaults.timeout = 5000;
axios.defaults.baseURL ='';
//http request 封装请求头拦截器
axios.interceptors.request.use(
  config => {
    var token = ''
    if(typeof Cookies.get('user') === 'undefined'){
      //此时为空
    }else {
      token = JSON.parse(Cookies.get('user')).token
    }//注意使用的时候需要引入cookie方法,推荐js-cookie
    config.data = JSON.stringify(config.data);
    config.headers = {
      'Content-Type':'application/json'
    }
    if(token != ''){
     config.headers.token = token;
    }
    return config;
  },
  error => {
    return Promise.reject(err);
  }
);
//http response 封装后台返回拦截器
axios.interceptors.response.use(
  response => {
    //当返回信息为未登录或者登录失效的时候重定向为登录页面
    if(response.data.code == 'W_100004' || response.data.message == '用户未登录或登录超时,请登录!'){
      router.push({
        path:"/",
        querry:{redirect:router.currentRoute.fullPath}//从哪个页面跳转
      })
    }
    return response;
  },
  error => {
    return Promise.reject(error)
  }
)
/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */
export function fetch(url,params={}){
  return new Promise((resolve,reject) => {
    axios.get(url,{
      params:params
    })
      .then(response => {
        resolve(response.data);
      })
      .catch(err => {
        reject(err)
      })
  })
}
/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function post(url,data = {}){
  return new Promise((resolve,reject) => {
    axios.post(url,data)
      .then(response => {
        resolve(response.data);
      },err => {
        reject(err)
      })
  })
}
/**
 * 封装导出Excal文件请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function exportExcel(url,data = {}){
  return new Promise((resolve,reject) => {
    axios({
      method: 'post',
      url: url, // 请求地址
      data: data, // 参数
      responseType: 'blob' // 表明返回服务器返回的数据类型
    })
    .then(response => {
      resolve(response.data);
      let blob = new Blob([response.data], {type: "application/vnd.ms-excel"});
      let fileName = "订单列表_"+Date.parse(new Date())+".xls" ;
      if (window.navigator.msSaveOrOpenBlob) {
        navigator.msSaveBlob(blob, fileName);
      } else {
        var link = document.createElement('a');
        link.href = window.URL.createObjectURL(blob);
        link.download = fileName;
        link.click();
        window.URL.revokeObjectURL(link.href);
      }
    },err => {
      reject(err)
    })
  })
}
/**
 * 封装patch请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function patch(url,data = {}){
  return new Promise((resolve,reject) => {
    axios.patch(url,data)
      .then(response => {
        resolve(response.data);
      },err => {
        reject(err)
      })
  })
}
/**
 * 封装put请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function put(url,data = {}){
  return new Promise((resolve,reject) => {
    axios.put(url,data)
      .then(response => {
        resolve(response.data);
      },err => {
        reject(err)
      })
  })
}

总结

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

Javascript 相关文章推荐
[HTML/CSS/Javascript]WWTJS
Sep 25 Javascript
jquery判断单个复选框是否被选中的代码
Sep 03 Javascript
15个jquery常用方法、小技巧分享
Jan 13 Javascript
JS中的二叉树遍历详解
Mar 18 Javascript
jquery 遍历数组 each 方法详解
May 25 Javascript
js css实现垂直方向自适应的三角提示菜单
Jun 26 Javascript
js实现的xml对象转json功能示例
Dec 24 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 Javascript
微信小程序仿RadioGroup改变样式的处理方案
Jul 13 Javascript
checkbox在vue中的用法小结
Nov 13 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
Feb 21 Javascript
JavaScript面试出现频繁的一些易错点整理
Mar 29 #Javascript
jQuery实现的上传图片本地预览效果简单示例
Mar 29 #jQuery
详解Javascript中new()到底做了些什么?
Mar 29 #Javascript
Koa2 之文件上传下载的示例代码
Mar 29 #Javascript
AngularJS下$http服务Post方法传递json参数的实例
Mar 29 #Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
Mar 29 #Javascript
利用js实现前后台传送Json的示例代码
Mar 29 #Javascript
You might like
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
Python类的用法实例浅析
2015/05/27 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
详解pandas赋值失败问题解决
2020/11/29 Python
利用python进行文件操作
2020/12/04 Python
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
企业宣传标语
2014/06/09 职场文书
校本研修个人总结
2015/02/28 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
Python基础教程,Python入门教程(超详细)
2021/06/24 Python