0

找不到项目时尝试发送自定义错误消息。ifNotNull大小写正确生成所需的响应。但ifNull不生成所需的响应(始终响应为空,状态码为 200)

AuthorService.java

public Uni<Author> findByName(String name) {
    return authorRepo.findByName(name);
}

资源.java

@GET
@Path("/{name}")
public Uni<Response> get(@PathParam("name") String name) {
    return authorService.findByName(name)
            .onItem().ifNotNull().transform(t -> new ResponseBodyDTO("success", true, t))
            .onItem().transform(t -> Response.ok(t).build())
            .onItem().ifNull().switchTo(() -> Uni.createFrom().item(new ResponseBodyDTO("fail", false, null))
                    .onItem().transform(t -> Response.status(Response.Status.NOT_FOUND).entity(t).build()));
}
4

1 回答 1

1

使用以下

@GET
@Path("/{name}")
public Uni<Response> get(@PathParam("name") String name) {
    return authorService.findByName(name)
            .onItem().ifNotNull().transform(t -> Response.ok(new ResponseBodyDTO("success", true, t)).build())
            .onItem().ifNull().continueWith(Response.status(Response.Status.NOT_FOUND).entity(new ResponseBodyDTO("fail", false, null)).build())
}
于 2021-04-08T15:19:17.207 回答