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实现单继承和多继承的简单方法
Mar 29 Javascript
js+css在交互上的应用
Jul 18 Javascript
javascript SpiderMonkey中的函数序列化如何进行
Dec 05 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
整理AngularJS中的一些常用指令
Jun 16 Javascript
jQuery EasyUI菜单与按钮详解
Jul 13 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
vue-cli脚手架引入图片的几种方法总结
Mar 13 Javascript
node结合swig渲染摸板的方法
Apr 11 Javascript
Vue组件中的data必须是一个function的原因浅析
Sep 03 Javascript
vue.js编译时给生成的文件增加版本号
Sep 17 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 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&java(一)
2006/10/09 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
php里array_work用法实例分析
2015/07/13 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
js控制框架刷新
2008/08/01 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
深入理解Node module模块
2018/03/26 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
python BeautifulSoup使用方法详解
2013/11/21 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python 性能优化技巧总结
2016/11/01 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
Python正则表达式指南 推荐
2018/10/09 Python
django-allauth入门学习和使用详解
2019/07/03 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
Python sublime安装及配置过程详解
2020/06/29 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
毕业生的自我评价范文
2013/12/31 职场文书
目标责任书范文
2014/04/14 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书