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 相关文章推荐
禁止你的左键复制实用技巧
Jan 04 Javascript
用JS实现3D球状标签云示例代码
Dec 01 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
Dec 04 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 Javascript
easy ui datagrid 从编辑框中获取值的方法
Feb 22 Javascript
Vue2.0 从零开始_环境搭建操作步骤
Jun 14 Javascript
从parcel.js打包出错到选择nvm的全部过程
Jan 23 Javascript
vue如何通过id从列表页跳转到对应的详情页
May 01 Javascript
element-ui上传一张图片后隐藏上传按钮功能
May 22 Javascript
javascript移动端 电子书 翻页效果实现代码
Sep 07 Javascript
微信小程序实现音乐播放页面布局
Dec 11 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
php include的妙用,实现路径加密
2008/07/29 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
Javascript 继承机制的实现
2009/08/12 Javascript
让新消息在网页标题闪烁提示的jQuery代码
2013/11/04 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
原生js实现的观察者和订阅者模式简单示例
2020/04/18 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
2019/08/02 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
python是否适合网页编程详解
2019/10/04 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
python在不同条件下的输入与输出
2020/02/13 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
合同和协议有什么区别?
2014/10/08 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
先进个人总结范文
2015/02/15 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
win10更新失败无限重启解决方法
2022/04/19 数码科技
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js