vue拦截器Vue.http.interceptors.push使用详解


Posted in Javascript onApril 22, 2017

刚开始学vue,github上down了一个开源项目,看源代码的时候看到了这个地方:

vue拦截器Vue.http.interceptors.push使用详解

/**
 * @export
 * @param {any} request
 * @param {any} next
 * @returns
 */
import store from './vuex/store'
// 全局错误处理,全局loading
import { setLoading, setTip } from './vuex/actions/doc_actions'
export default function (request, next) {
 if (request.tip !== false) {
 setLoading(store, true)
 }
 next((res) => {
 setLoading(store, false)
 let data = JSON.parse(res.data)
 if (res.status === 0) {
  setTip(store, {
  text: '网络不给力,请稍后再试'
  })
 }
 if (!data.success) {
  setTip(store, {
  text: data.error_msg
  })
 }
 })
}

这是一个全局的拦截器。于是搜索vue拦截器的用法,下面这一篇写的不错:

在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;

 });

});

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

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(6)
Dec 23 Javascript
JQuery 解析多维的Json数据格式
Nov 02 Javascript
JS中的异常处理方法分享
Dec 22 Javascript
JavaScript中最简洁的编码html字符串的方法
Oct 11 Javascript
javascript实现删除前弹出确认框
Jun 04 Javascript
Node.js操作Firebird数据库教程
Mar 04 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
Jan 04 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
Feb 14 Javascript
bootstrap table表格客户端分页实例
Aug 07 Javascript
JS如何设置元素样式的方法示例
Aug 28 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
vue.js,ajax渲染页面的实例
Feb 11 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
Apr 22 #Javascript
Vue.use源码分析
Apr 22 #Javascript
uploader秒传图片到服务器完整代码
Apr 22 #Javascript
Node.js中看JavaScript的引用
Apr 22 #Javascript
详解Angular中的自定义服务Service、Provider以及Factory
Apr 22 #Javascript
Ionic2调用本地SQlite实例
Apr 22 #Javascript
ionic+AngularJs实现获取验证码倒计时按钮
Apr 22 #Javascript
You might like
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
《PHP编程最快明白》第三讲:php数组
2010/11/01 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
a标签click和href执行顺序探讨
2014/06/23 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python实现跨文件全局变量的方法
2014/07/07 Python
用python实现面向对像的ASP程序实例
2014/11/10 Python
详解Python编程中基本的数学计算使用
2016/02/04 Python
Python-嵌套列表list的全面解析
2016/06/08 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
python获取磁盘号下盘符步骤详解
2019/06/19 Python
Python函数参数分类原理详解
2020/05/28 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
办公室内勤工作职责
2013/12/11 职场文书
党建示范点实施方案
2014/03/12 职场文书
青岛导游词
2015/02/12 职场文书
优秀团员自我评价
2015/03/10 职场文书
nginx日志格式分析和修改
2022/04/28 Servers