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 相关文章推荐
Mootools 1.2教程 函数
Sep 15 Javascript
JS绘制生成花瓣效果的方法
Aug 05 Javascript
jQuery解决input超多的表单提交
Aug 10 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
Oct 24 Javascript
很棒的js选项卡切换效果
Jul 15 Javascript
vue-quill-editor实现图片上传功能
Aug 08 Javascript
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
js闭包学习心得总结
Apr 17 Javascript
微信小程序实现弹出菜单
Jul 19 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
Nov 25 Javascript
面试题:react和vue的区别分析
Apr 08 Javascript
写一个Vue loading 插件
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 session常见问题集锦及解决办法总结
2007/03/18 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
php的curl封装类用法实例
2014/11/07 PHP
php实现源代码加密的方法
2015/07/11 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
JavaScript开发时的五个注意事项
2007/12/08 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
大学校运会广播稿
2014/02/03 职场文书
致200米运动员广播稿
2014/02/06 职场文书
青春奉献演讲稿
2014/05/08 职场文书
理财计划书
2014/08/14 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
Java实现二分搜索树的示例代码
2022/03/17 Java/Android