You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus Reactive Mutiny接口返回Uni引用而非字符串值问题求助

问题原因

当前项目引入的是阻塞式quarkus-resteasy组件,该组件原生不支持Mutiny响应式类型Uni的自动解析,会直接将Uni实例的toString()结果作为响应返回,因此你拿到的是Uni对象的引用字符串,而非其包裹的实际业务值。

解决方案

方案一(推荐):替换为响应式REST组件

Quarkus官方主推的quarkus-resteasy-reactive组件原生支持Mutiny的Uni/Multi类型自动解析,无需修改业务接口代码即可正常返回结果,只需调整pom.xml依赖:

  1. 删除原有两个阻塞式REST相关依赖:
<!-- 移除以下两个依赖 -->
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-resteasy-jackson</artifactId>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-resteasy</artifactId>
</dependency>
  1. 新增响应式REST相关依赖:
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-resteasy-reactive</artifactId>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-resteasy-reactive-jackson</artifactId>
</dependency>
  1. 重启项目后调用接口即可正常返回item1字符串。

方案二(不推荐):阻塞获取Uni值

如果项目必须保留阻塞式quarkus-resteasy,可以手动阻塞等待Uni执行完成并获取结果,该方案会丢失响应式编程的非阻塞优势:

@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
    return Uni.createFrom().item("item1")
            .await().indefinitely();
}

内容的提问来源于stack exchange,提问作者Jordi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:45:05