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 相关文章推荐
IE和Mozilla的兼容性汇总event
Aug 12 Javascript
ext实现完整的登录代码
Aug 08 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
Apr 15 Javascript
js关于getImageData跨域问题的解决方法
Oct 14 Javascript
js实现界面向原生界面发消息并跳转功能
Nov 22 Javascript
Ionic3 UI组件之autocomplete详解
Jun 08 Javascript
jQuery实现简单的手风琴效果
Apr 17 jQuery
Vue实现typeahead组件功能(非常靠谱)
Aug 26 Javascript
Angular4学习笔记之根模块与Ng模块
Sep 09 Javascript
微信小程序image图片加载完成监听
Aug 31 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
Sep 12 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
Feb 12 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 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
PHP中的表达式简述
2016/05/29 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
Python将xml和xsl转换为html的方法
2015/03/10 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
Python 调用PIL库失败的解决方法
2019/01/08 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
泰国在线书店:SE-ED
2020/06/21 全球购物
安全生产检查通报
2014/01/29 职场文书
社区庆中秋节活动方案
2014/02/07 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
大队委员竞选稿
2015/11/20 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
2019军训心得体会
2019/06/27 职场文书
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP