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 相关文章推荐
JS不间断向上滚动效果代码
Dec 25 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
Dec 18 Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 Javascript
举例讲解jQuery中可见性过滤选择器的使用
Apr 18 Javascript
Node.js的环境安装配置(使用nvm方式)
Oct 11 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 Javascript
JavaScript 日期时间选择器一些小结
Apr 02 Javascript
vue axios重复点击取消上一次请求封装的方法
Jun 19 Javascript
通过js示例讲解时间复杂度与空间复杂度
Aug 06 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
Aug 26 Javascript
JavaScript鼠标拖拽事件详解
Apr 03 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 基本语法格式
2009/12/15 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
JS变量提升及函数提升实例解析
2020/09/03 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
python分布式编程实现过程解析
2019/11/08 Python
通过python检测字符串的字母
2020/02/18 Python
python画环形图的方法
2020/03/25 Python
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
电气自动化大学生求职信
2013/10/16 职场文书
实习生体会的自我评价范文
2013/11/28 职场文书
化工专业自荐书
2014/06/16 职场文书
工程项目合作意向书
2015/05/08 职场文书
道歉的话怎么说
2015/05/12 职场文书
图书借阅制度范本
2015/08/06 职场文书
大学生党课感想
2015/08/11 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
浅谈Python数学建模之线性规划
2021/06/23 Python