当前位置:首页 > 日记 > 正文

vue-resource 拦截器使用详解

vue-resource 拦截器使用详解

在vue项目使用vue-resource的过程中,临时增加了一个需求,需要在任何一个页面任何一次http请求,增加对token过期的判断,如果token已过期,需要跳转至登录页面。如果要在每个页面中的http请求操作中添加一次判断,那么会是一个非常大的修改工作量。那么vue-resource是否存在一个对于任何一次请求响应捕获的的公共回调函数呢?答案是有的!

vue-resource的interceptors拦截器的作用正是解决此需求的妙方。在每次http的请求响应之后,如果设置了拦截器如下,会优先执行拦截器函数,获取响应体,然后才会决定是否把response返回给then进行接收。那么我们可以在这个拦截器里边添加对响应状态码的判断,来决定是跳转到登录页面还是留在当前页面继续获取数据。

下边代码添加在main.js中

Vue.http.interceptors.push((request, next) => { console.log(this)//此处this为请求所在页面的Vue实例 // modify request request.method = 'POST';//在请求之前可以进行一些预处理和配置 // continue to next interceptor  next((response) => {//在响应之后传给then之前对response进行修改和逻辑判断。对于token时候已过期的判断,就添加在此处,页面中任何一次http请求都会先调用此处方法    response.body = '...';    return response; });});

在知道此方法之前,鄙人想了一个笨方法,但是也能在一定程度上降低修改工作量。方法是为Vue绑定一个this.$$http.get方法取代this.$http.get方法,每个页面的http请求添加个$在$http前即可。

// ajax.jsfunction plugin(Vue){  Object.defineProperties(Vue.prototype,{    $$http:{      get(){        return option(Vue);      }    }  })}function option(Vue){  let v = new Vue();  return {    get(a,b){      let promise = new Promise(function(reslove,reject){        v.$http.get(a,b).then((res)=>{          reslove(res)        },(err)=>{            //处理token过期问题。        })      })      return promise;    }  }}module.exports=plugin;//main.jsimport ajax from './ajax.js'Vue.use(ajax)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

浅谈nodejs中的类定义和继承的套路

浅谈nodejs中的类定义和继承的套路

继承,类定义,套路,浅谈,电脑软件,javascript是一门极其灵活的语言。灵活到你无法忍受!我个人喜欢强类型的语言,例如c/c++,c#等。但是js代表着未来,所以需要学习。js中类定义以及继承有n多种方式,现在来学习一下nodejs类定义以及继承的固定套路…

Asp.net 中使用GridView控件实现Ch

Asp.net 中使用GridView控件实现Ch

单选,控件,电脑软件,net,Asp,在GridView控件中,第0列有放一个CheckBox控件,现想实现对CheckBox进行单选。先看看效果:在ASPX页面,可以这样做:有一点注意的是需要使用OnRowCreated事件。在ASPX.cs代码里,实现上面OnRowCreated事件:上面有个事件委托…

IE11下使用canvas.toDataURL报Secu

IE11下使用canvas.toDataURL报Secu

解决方法,错误,电脑软件,canvas,SecurityError,发现问题最近在项目中用到了 canvas 的 toDataURL 方法来获取图片的 base64 格式数据,用以上传到后台。由于之前也遇到过 canvas 被跨域图片污染不能获取数据的坑,因此这回一开始就机智的把 cro…

excel表格统计数据教程

excel表格统计数据教程

教程,统计数据,表格,电脑软件,excel,  Excel中数据该如何统计呢?接下来是小编为大家带来的excel表格统计数据教程,供大家参考。excel表格统计数据教程:  统计数据步骤1:菜单栏——公式(03版的是在数据里面可以找到)—&mdas…

Word2003如何做电子报

Word2003如何做电子报

方法,板报,如何做,电子报,电脑软件,  利用word2003制作电子板报前,要思考主题,收集素材,之后进行制作。那么大家知道怎样做电子报吗?下面是小编给大家整理的一些有关word2003制作电子板报的方法,希望看完本教程的朋友都能学会Word技巧并运用起…

excel2007使用时卡顿的解决方法exc

excel2007使用时卡顿的解决方法exc

解决方法,电脑软件,时卡顿,strong,  Microsoft Office Excel 2007 打开 Excel 2003 创建的文件在筛选时出现卡顿,要等待几分钟甚至更长时间才会响应,今天,小编就教大家如何解决卡顿的方法。Excel2007使用时卡顿的解决方法excel2007使用时卡…

Asp.net Core 1.1 升级后操作mysql

Asp.net Core 1.1 升级后操作mysql

操作,升级,解决办法,电脑软件,net,遇到问题core的版本从1.0升级到1.1,操作mysql数据库,查询数据时遇到MissingMethodException问题,更新、插入操作没有问题。如果你也遇到这个问题,请参照以下步骤进行升级操作。操作步骤及内容如果你的项目已经…

ASP.NET Core 2.0 本地文件操作问

ASP.NET Core 2.0 本地文件操作问

操作,解决方案,本地文件,电脑软件,NET,问题如何在ASP.NET Core 2.0中受限地访问本地目录和文件信息?答案新建一个空项目,修改Startup类,添加访问本地文件所需的服务:public void ConfigureServices(IServiceCollection services){ services.Add…

AI如何使用黄金比例绘制鲸鱼logo?

AI如何使用黄金比例绘制鲸鱼logo?

绘制,黄金,鲸鱼,如何使用,比例,版权申明:本文原创作者“格律设计”,感谢“格律设计”的原创经验分享!最近,很多网友问小编ai怎么做黄金比例lo?接下来小编就给大家分享AI使用黄金比例绘制鲸鱼lo的方法?教程难度不大,主要介绍运…

让div运动起来 js实现缓动效果

让div运动起来 js实现缓动效果

缓动,运动,效果,电脑软件,div,本文实例为大家分享了js实现缓动效果的具体代码,供大家参考,具体内容如下var tween = { linear:function(t,b,c,d){ return c*t/d + b; }, easeIn:function(t,b,c,d){ return c * ( t /= d ) * t + b; …

excel表格的筛选数字范围的教程

excel表格的筛选数字范围的教程

数字,教程,筛选,表格,电脑软件,  Excel中的筛选功能可以筛选数据,具体该如何筛选数字范围呢?下面是小编带来的关于excel表格的筛选数字范围的教程,希望阅读过后对你有所启发!excel表格的筛选数字范围的教程:  筛选数字范围步骤1:选中当前列…

Javascript设计模式之装饰者模式详

Javascript设计模式之装饰者模式详

设计模式,装饰者模式,详解,电脑软件,Javascript,一、前言:装饰者模式(Decorator Pattern):在不改变原类和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象。装饰者模式的特点:1. 在不改变原对象的原本…