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 typeof 用法
Dec 28 Javascript
单击按钮显示隐藏子菜单经典案例
Jan 04 Javascript
HTML5之lang属性与dir属性的详解
Jun 19 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
js类定义函数时用prototype与不用的区别示例介绍
Jun 10 Javascript
jQuery关键词说明插件cluetip使用指南
Apr 21 Javascript
Javascript之Math对象详解
Jun 07 Javascript
JS验证字符串功能
Feb 22 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
Mar 10 Javascript
JS中的数组转变成JSON格式字符串的方法
May 09 Javascript
JQuery的加载和选择器用法简单示例
May 13 jQuery
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
Sep 11 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
解析数组非数字键名引号的必要性
2013/08/09 PHP
PHP 验证登陆类分享
2015/03/13 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
jQuery live
2009/05/15 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
python分块读取大数据,避免内存不足的方法
2018/12/10 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
python的链表基础知识点
2020/09/13 Python
程序员跳槽必看面试题总结
2013/06/28 面试题
网络工程师的自我评价
2013/10/02 职场文书
师范生自荐信范文
2013/10/06 职场文书
优秀大学生的自我评价
2014/01/16 职场文书
小学教师国培感言
2014/02/08 职场文书
园林技术个人的自我评价
2014/02/15 职场文书
设计顾问服务计划书
2014/05/04 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android