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 字符串操作函数
Jul 25 Javascript
Javascript 匿名函数及其代码模式原理
Mar 19 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
Jun 10 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
js自定义Tab选项卡效果
Jun 05 Javascript
Vue中的异步组件函数实现代码
Jul 20 Javascript
解决vue点击控制单个样式的问题
Sep 05 Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 Javascript
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
你不知道的 TypeScript 高级类型(小结)
Aug 28 Javascript
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
原型和原型链 prototype和proto的区别详情
Nov 02 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
PHP4.04简明安装
2006/10/09 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php中session退出登陆问题
2014/02/27 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
浅谈JS继承_借用构造函数 & 组合式继承
2016/08/16 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
python排序方法实例分析
2015/04/30 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
Python更换pip源方法过程解析
2020/05/19 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
东方电视购物:东方CJ
2016/10/12 全球购物
大学生简单自荐信
2013/11/10 职场文书
商务英语求职自荐信范文
2013/12/24 职场文书
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
一年级班主任感言
2014/03/08 职场文书
出国英文推荐信
2014/05/10 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
vue+element ui实现锚点定位
2021/06/29 Vue.js