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 相关文章推荐
jQuery 1.0.2
Oct 11 Javascript
Prototype使用指南之string.js
Jan 10 Javascript
Mootools 1.2教程 Fx.Tween的使用
Sep 15 Javascript
jQuery 判断元素上是否绑定了事件
Oct 28 Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 Javascript
使用jQuery简单实现模拟浏览器搜索功能
Dec 21 Javascript
基于javascript实现图片切换效果
Apr 17 Javascript
关于动态执行代码(js的Eval)实例详解
Aug 15 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
Sep 19 Javascript
vue中 数字相加为字串转化为数值的例子
Nov 07 Javascript
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
vue中的.$mount('#app')手动挂载操作
Sep 02 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 和 XML: 使用expat函数(二)
2006/10/09 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
js选项卡的制作方法
2017/01/23 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
2019/11/06 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
如何写python的配置文件
2020/06/07 Python
美国精油公司:Plant Therapy
2019/05/17 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
人代会标语
2014/06/30 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js