找不到项目时如何 return 自定义错误响应

How to return custom Error Response when item not found

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

AuthorService.java

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

Resource.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()));
}

使用以下内容

@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())
}