@Route(...)
public Uni<?> call() {
return Uni.createFrom().voidItem();
}引发Uni:null返回的NullPointerException: Invalid值
然而,
@Route(...)
public Uni<Void> call() {
return Uni.createFrom().voidItem();
}工作正常,并使用HTTP 204进行响应
如何从相同的方法获取Uni或Uni?我只需要在特定情况下返回http 204
发布于 2021-04-28 14:47:35
您不能直接这样做,因为类型不同。我建议使用RESTEasy Reactive,并执行以下操作:
@GET
public Uni<Response> call() {
Uni<AnyObject> uni = .... ;
return uni
.onItem().transform(res -> {
if (res == null) return Response.noContent().build();
return Response.ok(res).build();
});
}通过发出Response对象,您可以自定义响应状态。
如果您想继续使用反应式路由,另一个解决方案是不返回Uni,而是获取RoutingContext作为参数:
@Route(...)
public void call(RoutingContext rc) {
HttpServerResponse response = rc.response();
Uni<AnyObject> uni = .... ;
return uni
.subscribe().with(res -> {
if (res == null) response.setStatus(204).end();
else response.setStatus(200).end(res);
}, failure -> rc.fail(failure)); // will produce a 500.
}https://stackoverflow.com/questions/67289228
复制相似问题