程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何返回 Uni<Object> 或 Uni<Void>?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何返回 Uni<Object> 或 Uni<Void>??

开发过程中遇到如何返回 Uni<Object> 或 Uni<Void>?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何返回 Uni<Object> 或 Uni<Void>?的解决方法建议,希望对你解决如何返回 Uni<Object> 或 Uni<Void>?有所启发或帮助;
@Route(...)
public Uni<?> call() {
    return Uni.createFrom().voIDItem();
}

抛出一个 NullPointerException:Uni 返回的值无效:null

不过

@Route(...)
public Uni<VoID> call() {
    return Uni.createFrom().voIDItem();
}

工作正常并以 http 204 响应

我如何通过相同的方法获得 Uni 或 Uni? 我只需要在特定场景下返回http 204

解决方法

您不能直接这样做,因为类型不同。 我建议使用 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.
}

大佬总结

以上是大佬教程为你收集整理的如何返回 Uni<Object> 或 Uni<Void>?全部内容,希望文章能够帮你解决如何返回 Uni<Object> 或 Uni<Void>?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。