如何解决quarkus Multi<String> 不引用字符串
背景:我刚刚开始使用 Quarkus,正在经历 https://quarkus.io/guides/resteasy-reactive
我定义了以下端点:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/greeting/{name}/{count}/{delayInSeconds}")
public Multi<String> greetings(String name,long count,short delayInSeconds) {
return service.greetings(name,delayInSeconds,count);
}
我认为底层 service
的细节不是特别相关;它产生一个 "hello {name} - {idx}"
流。
我在返回的 http 响应中看到的是未加引号的字符串(无效的 json):
curl http://localhost:8080/hello/greeting/neo/4/1
[hello neo - 0,hello neo - 1,hello neo - 2,hello neo - 3]
我尝试将 pom.xml
的 quarkus-resteasy-reactive
依赖项替换为 quarkus-resteasy-reactive-jackson
但效果相同(我相信是因为 String
已在此处注册:https://quarkus.io/guides/resteasy-reactive#resource-types) .
是否有安全的方法来执行此操作?或者只是将 Multi
转换为 List
以便杰克逊可以正确序列化它的想法?
我会注意到 https://quarkus.io/guides/getting-started-reactive(官方文档)中给出的示例显示了引用的响应:
$ curl http://localhost:8080/hello/greeting/3/neo
["hello neo - 0","hello neo - 1","hello neo - 2"]
更新
这有效地完成了我想要的,虽然我想确认它没有阻塞 I/O 线程:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/greeting/{name}/{count}/{delayInSeconds}")
// NOTE: conversion to `Uni<List` from `Multi`
public Uni<List<String>> greetings(String name,count).collect().asList();
}
更新
正如评论中所指出的,这是一个开放的错误:https://github.com/quarkusio/quarkus/issues/18043 结束。
解决方法
如评论中所述,这是一个开放错误:https://github.com/quarkusio/quarkus/issues/18043 Closing。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。