在Quarkus应用程序中使用Vertx Web路由和Minity的故障处理程序问题

时间:2020-06-09 05:30:12

标签: vert.x quarkus smallrye

我试图同时使用Munity API和Vertx Route。完整的代码是here

我定义了这样的路由器规则。

CodeCommit Notification

处理程序实现是这样的。

 router.put("/posts/:id").consumes("application/json").handler(BodyHandler.create()).handler(handlers::update);

LOGGER.log(Level.INFO, "\npath param id: {0}\nrequest body: {1}", new Object[]{id, body}); var form = fromJson(body, PostForm.class); this.posts.findById(UUID.fromString(id)) .onFailure(PostNotFoundException.class).invoke(ex -> rc.response().setStatusCode(404).end()) .map( post -> { post.setTitle(form.getTitle()); post.setContent(form.getContent()); return this.posts.update(UUID.fromString(id), post); } ) .subscribe() .with(data -> rc.response().setStatusCode(204).end()); 方法中,它抛出一个findById

PostNotFoundException

运行应用程序时,并使用不存在的帖子ID在 public Uni<Post> findById(UUID id) { return this.client .preparedQuery("SELECT * FROM posts WHERE id=$1") .execute(Tuple.of(id)) .map(RowSet::iterator) // .map(it -> it.hasNext() ? rowToPost(it.next()) : null); .flatMap(it -> it.hasNext() ? Uni.createFrom().item(rowToPost(it.next())) : Uni.createFrom().failure(PostNotFoundException::new)); } 上进行更新(通过HTTP PUT方法),它将按预期打印404错误状态,但是会有一些暂停时间

在另一个处理程序方法中,它像以下一样调用/posts/postid,并且运行良好,并且在未找到时快速响应。

findById

0 个答案:

没有答案