Quarkus Swagger MongoDB ObjectId 格式

问题描述 投票:0回答:2

我正在使用 quarkus-resteasy 和 mongodb 编写应用程序。安装 quarkus OpenAPI 后,我发现 swagger UI 无法正确显示 ObjectID 格式。

我想看到类似“61338f5b47bfc65136b5de30”的内容。如何全局设置ObjectID输出格式?

mongodb swagger-ui quarkus objectid
2个回答
2
投票

因为 objectId 就是它的本质,所以就是里面的字段以及 openapi 正在解释的内容。

您可以使用

@Schema
注释覆盖正在生成的内容,提供格式、示例和类型(在本例中为字符串),您可以控制 swagger 将包含的内容。

@Schema(description = "Identifier of the Whatever", type = SchemaType.STRING, format = "XXXXXX", example="<Insert and example here>")

因为这是一个值而不是一个可以修改的类,我认为您需要将此注释放在所有使用这些类型的 DTO 中。

另一种选择是使用 Wrapper 对象,但这可能会修改你的 json 结构,具体取决于你如何实现它。


0
投票

我最初认为这是有效的,因为它确实用模型中的字符串替换了 ObjectId。但是,当我在 PUT 或 POST 中返回该模型时,OpenAPI 不会引用该模型,例如$ref: '#/components/schemas/A2dlDataSourceOnboarding'

对于 PUT 和 POST,它会忽略上面的模型并表示返回的内容是:

内容: 应用程序/json: 架构: 类型:对象 特性: ID: 类型:对象 所有的: - $ref: '#/components/schemas/ObjectId' 示例:d76d6cb6cba140e0a308643c 数据源名称: 类型:字符串 数据源用户名: 类型:字符串

因此 OpenAPI 使用旧的/替换的 ObjectId 重复相同的模型内容。为什么 OpenAPI 不总是通过 $ref 引用模型?

当前的 OpenAPI 已损坏,因为存在未定义 ObjectId 的错误。

© www.soinside.com 2019 - 2024. All rights reserved.