我正在使用 quarkus-resteasy 和 mongodb 编写应用程序。安装 quarkus OpenAPI 后,我发现 swagger UI 无法正确显示 ObjectID 格式。
我想看到类似“61338f5b47bfc65136b5de30”的内容。如何全局设置ObjectID输出格式?
因为 objectId 就是它的本质,所以就是里面的字段以及 openapi 正在解释的内容。
您可以使用
@Schema
注释覆盖正在生成的内容,提供格式、示例和类型(在本例中为字符串),您可以控制 swagger 将包含的内容。
@Schema(description = "Identifier of the Whatever", type = SchemaType.STRING, format = "XXXXXX", example="<Insert and example here>")
因为这是一个值而不是一个可以修改的类,我认为您需要将此注释放在所有使用这些类型的 DTO 中。
另一种选择是使用 Wrapper 对象,但这可能会修改你的 json 结构,具体取决于你如何实现它。
我最初认为这是有效的,因为它确实用模型中的字符串替换了 ObjectId。但是,当我在 PUT 或 POST 中返回该模型时,OpenAPI 不会引用该模型,例如$ref: '#/components/schemas/A2dlDataSourceOnboarding'
对于 PUT 和 POST,它会忽略上面的模型并表示返回的内容是:
内容: 应用程序/json: 架构: 类型:对象 特性: ID: 类型:对象 所有的: - $ref: '#/components/schemas/ObjectId' 示例:d76d6cb6cba140e0a308643c 数据源名称: 类型:字符串 数据源用户名: 类型:字符串
因此 OpenAPI 使用旧的/替换的 ObjectId 重复相同的模型内容。为什么 OpenAPI 不总是通过 $ref 引用模型?
当前的 OpenAPI 已损坏,因为存在未定义 ObjectId 的错误。