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 相关文章推荐
随机显示经典句子或诗歌的javascript脚本
Aug 04 Javascript
深入理解JS函数的参数(arguments)的使用
May 28 Javascript
angularjs实现文字上下无缝滚动特效代码
Sep 04 Javascript
jquery实现下拉框多选方法介绍
Jan 03 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
Bootstrap入门教程一Hello Bootstrap初识
Mar 02 Javascript
基于jQuery封装的分页组件
Jun 26 jQuery
JavaScript算法教程之sku(库存量单位)详解
Jun 29 Javascript
Vue中使用vee-validate表单验证的方法
May 09 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
Aug 10 Javascript
详解vue-cli3使用
Aug 14 Javascript
jQuery中each遍历的三种方法实例分析
Sep 07 jQuery
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中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
python批量修改图片大小的方法
2018/07/24 Python
Python制作exe文件简单流程
2019/01/24 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
中学实习教师自我鉴定
2013/12/12 职场文书
有趣的广告词
2014/03/18 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
节电标语大全
2014/06/23 职场文书
怎样写离婚协议书
2014/09/10 职场文书
创优争先心得体会
2014/09/11 职场文书
离婚被告答辩状
2015/05/22 职场文书