您好,欢迎访问一九零五行业门户网

vue+axios请求拦截

这次给大家带来vue+axios请求拦截,使用vue+axios请求拦截的注意事项有哪些,下面就是实战案例,一起来看一下。
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)      })  })}
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
js同源与跨域访问实现详解
react做出页面代码分割、按需加载
以上就是vue+axios请求拦截的详细内容。
其它类似信息

推荐信息