Vert.x 4 Web 实现拦截器Interceptor功能

编程教程 > Java > Vert.x (317) 2024-11-26 14:39:04

前言

引用《Vert.x 4 Web REST CRUD接口应用》项目,加入日志依赖并编码实现类似Interceptor功能处理。vert.x日志集成参考《Vert.x 4 加入logback日志》

 

Vert.x官网对于Handler的说明

Vert.x 4 Web 实现拦截器Interceptor功能_图示-b5643ad37b714293b89a4110c7a928f1.png

请注意根据官网介绍在同一个路由路径,多个handler的时候nex()调用,执行顺序是安注册顺序来的。同时也可以在不修改代码的情况下通过order来修改handler的顺序。

 

通过handler的顺序执行来实现Interceptor

创建一个DemoInterceptorHandler 

@Slf4j
public class DemoInterceptorHandler implements Handler<RoutingContext> {

@Override
public void handle(RoutingContext routingContext) {
log.info("DemoInterceptorHandler start ....");
String token = routingContext.request().getHeader("token");
log.info("DemoInterceptorHandler header token : {}",token);
routingContext.next();
log.info("DemoInterceptorHandler end ....");
}

public static DemoInterceptorHandler create() {
return new DemoInterceptorHandler();
}
}


 

MainVerticle中handler注入路由中

代码聚焦

//order排序越小越靠前执行
router.route("/*").order(Integer.MIN_VALUE).handler(DemoInterceptorHandler.create());

 

修改MainVerticle获取产品方法

/**
* 通过路径参数id获取单个产品
* @param routingContext 路由上下文
*/
private void getById(RoutingContext routingContext){
String id = routingContext.pathParam("id");
String token = routingContext.request().getHeader("token");
log.info("getById header token : {}",token);
Whisky whisky = products.get(Integer.parseInt(id));
if (whisky == null) {
throw new BusinessException(481,"未找到相关产品信息:id-"+id);
}
routingContext.response()
.putHeader("content-type", "application/json; charset=utf-8")
.end(Json.encodePrettily(whisky));
}

 

 

启动MainVerticle

执行获取单个产品信息逻辑,查看控制台

Vert.x 4 Web 实现拦截器Interceptor功能_图示-37fd3bfe98ac4e30a01902261c4b233d.png
执行顺序

从日志可以看到执行顺序永远都是拦截器的handler优先于具体接口的handler方法。故此可用作Vert.x的Interceptor功能。

 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
前言引用《Vert.x 4 Web REST CRUD接口应用》项目,加入日志依赖并编码实现类似Interceptor功能处理。vert.x日志集成参考《Ver
前言项目由之前的第一个vert.x 4 项目改编而来,vert.x项目创建参考: vert.x 4 web应用编写修改MainVerticle文件,内容如下:p
前言项目创建参考之前的《Vert.x 4 Web应用初识》。本文通过Vert.x实现了REST接口的CRUD操作。通过本教程你可以获得以下内容vert.x项目中
Vert.x java 入门,Vert.x这个框架在常规的web业务开发中估计还不是很成熟。但是了解了他的一些原理我觉得可以有一番作为。今天主要简单讲解下eclipse Vert.x是什么有什么...
前言文件上传在web应用比较常见,本文以vert.x web实现文件上传功能。引用之前的项目《Vert.x 4 Web应用初识》作为基础,添加了日志。 Vert
前言接上一篇《Vert.x 4 Web应用初识》,在web应用中除了访问地址得到动态的信息还有静态的资源库访问,如 jQuery / bootstrap 等前端
前言这里主要讲解Vert.x配置文件的读取和使用,引用之前的项目《Vert.x 4 Web应用初识》 引入必要依赖maven pom.xml&lt;dependenc
前言创建一个常规的web项目肯定需要一个模板引擎来实现,引用之前的项目《Vert.x 4 Web应用初识》基础结构目前vert.x支持多款模板引擎,包括:MVE
前言最新的Ver.x 4 从idea工具运行启动,并访问。项目创建通过vert.x官网生成器完成。Vert.x 4项目创建打开vert.x官网项目生成地址,ht
前言引用之前的例子《Vert.x 4 Web REST CRUD接口应用》项目作为基础进行修改,创建一个自定义异常和异常拦截处理器。以实现对指定异常返回特殊数据
前言Vert.x Router路由中多个处理器之间通过RoutingContext共享数据实现。 Vert.x Router 上下文数据数据设置routingC
前言Web项目开发一般接口入参都有校验需求,Vert.x 4 目前已有插件实现参数校验,引用之前的项目《Vert.x 4 Web应用初识》源码 引入验证插件ma
前言前面已经学习了Vert.x web的基础接口,本文主要讲解引入jwt为接口认证/鉴权。引用之前创建的项目《Vert.x 4 Web应用初识》,加入jwt t
前言本文主要讲解在Vert.x环境下与Mysql数据库连接和操作,实现基础的增删改查和事务,以及REST接口返回数据库中查询结果。项目引用之前的《Vert.x
前言vert.x 默认是没有像spring的依赖注入的,需要自己结合vertx-service-proxy插件实现。本文引用项目为基础《Vert.x 4 Web