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(DHTML)中的一些技巧
Jan 09 Javascript
javascript事件模型代码
Jul 01 Javascript
jQuery 渐变下拉菜单
Dec 15 Javascript
jQuery实现统计复选框选中数量
Nov 24 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
Jan 28 Javascript
JQ技术实现注册页面带有校验密码强度
Jul 27 Javascript
AngularJS实现元素显示和隐藏的几个案例
Dec 09 Javascript
基于canvas实现的钟摆效果完整实例
Jan 26 Javascript
Node.JS更改Windows注册表Regedit的方法小结
Aug 18 Javascript
Vue单页及多页应用全局配置404页面实践记录
May 22 Javascript
解决在Vue中使用axios用form表单出现的问题
Oct 30 Javascript
vue-resource:jsonp请求百度搜索的接口示例
Nov 09 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
php格式化金额函数分享
2015/02/02 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
Yii2 queue的队列使用详解
2019/07/19 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
2012/01/15 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
跟老齐学Python之集合(set)
2014/09/24 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
纽约著名的服装辅料来源:M&J Trimming
2017/07/26 全球购物
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
化工专业应届生求职信
2013/11/08 职场文书
迎新晚会邀请函
2014/02/01 职场文书
十佳家长事迹材料
2014/08/26 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
工程部文员岗位职责
2015/02/04 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书