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 相关文章推荐
js 操作select和option常用代码整理
Dec 13 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
浅析JavaScript声明变量
Dec 21 Javascript
bootstrap中添加额外的图标实例代码
Feb 15 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
Aug 19 Javascript
浅谈Express异步进化史
Sep 09 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 Javascript
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
解决vue打包之后静态资源图片失效的问题
Feb 21 Javascript
记一次webapck4 配置文件无效的解决历程
Sep 19 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
Apr 10 Javascript
vue.js this.$router.push获取不到params参数问题
Mar 03 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 Class 文章
2007/04/04 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php curl基本操作详解
2013/07/23 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
html读出文本文件内容
2007/01/22 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
python如何从文件读取数据及解析
2019/09/19 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
python matplotlib库的基本使用
2020/09/23 Python
银河香水:Galaxy Perfume
2019/03/25 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
模具设计与制造专业推荐信
2014/02/16 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
2014年个人工作总结模板
2014/12/15 职场文书
关于学习的决心书
2015/02/05 职场文书
金砖之国观后感
2015/06/11 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
Java获取e.printStackTrace()打印的信息方式
2021/08/07 Java/Android
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫
Java的Object类的九种方法
2022/04/13 Java/Android