我正在尝试使用RESTEasy和JSON-B在official guide之后启动并运行反应性REST服务。我还添加了对OpenAPI的支持,以在this guide之后测试该服务。
这两个部分都可以独立工作,服务会正确返回经过硬编码的演示数据。 Swagger UI显示可用的路由并允许调用它们。
但是,它不像我希望的那样光滑...
从简单的非反应性路由中,已正确提取模式:
Fruit:
type: object
properties:
description:
type: string
name:
type: string
但是从反应式路由中,已经提取了空模式。例如,介绍
@GET
@Path("/{name}")
public Uni<Fruit> getOne(@PathParam(value = "name") String name) {
}
导致架构:
UniFruit:
type: object
是否有办法重用现有的Fruit
模式?
我尝试注释该路线,但没有任何效果:
@GET
@Path("/{name}")
// @Schema(ref = "#/components/schemas/Fruit") // Nope...
// @Schema(ref = "Fruit") // Nope...
public Uni<Fruit> getOne(@PathParam(value = "name") String name) {
}
理想情况下,无论如何我都不希望分别注释每个反应式方法。
是否有方法配置整个项目范围在路由返回T
或Uni<T>
时使用Multi<T>
的模式?
我已经浏览了MicroProfile OpenAPI规范https://github.com/eclipse/microprofile-open-api/blob/master/spec/src/main/asciidoc/microprofile-openapi-spec.adoc,但是找不到一种方法来进行您请求的整个项目范围的架构更改。您可以为给定的类执行此操作,但是此处的类为Uni
,并且您希望根据参数化类型使用不同的架构。
因此,除非SmallRye OpenAPI(实现)具有某些特定的方法来执行此操作,否则Quarkus中的修复似乎是可行的方法。