【问题标题】:How to expose additional models : Migrating from Springfox to Springdoc如何公开其他模型:从 Springfox 迁移到 Springdoc
【发布时间】:2020-06-03 18:16:59
【问题描述】:

我需要公开一些不直接在 REST API 方法中使用的模型。

在 springfox 中,我使用 Docket 的 additionalModels 方法以编程方式将模型添加到规范中:

docket.additionalModels(
  typeResolver.resolve(XModel1.class),
  typeResolver.resolve(XModel2.class)
)

用springdoc怎么做?

我创建了一个带有虚拟参数的虚拟操作,其中包括所有必需的模型。但我觉得这种方法还有改进的空间。

【问题讨论】:

标签: openapi springdoc


【解决方案1】:

使用 OpenApiCustomiser ,您可以访问 OpenAPI 对象。 您可以添加任何您想要的对象/操作,而无需在代码上添加注释。

您可以查看文档以了解更多详细信息:

【讨论】:

  • 谢谢。我使用openApi.components.schemas.putAll(ModelConverters.getInstance().read(Foo::class.java)) 创建了定制器,但在生成的规范中找不到 Foo 模型。我认为这是招摇问题,而不是 springdoc
【解决方案2】:

在科特林中

fun components(): Components {
    val components = Components()

    val converter = ModelConverters.getInstance()

    val schema1 = converter.readAllAsResolvedSchema(XModel1::class.java)
    val schema2 = converter.readAllAsResolvedSchema(XModel2::class.java)

    schema1.referencedSchemas.forEach { s -> components.addSchemas(s.key, s.value) }
    schema2.referencedSchemas.forEach { s -> components.addSchemas(s.key, s.value) }

    return components
}

另外,您可能需要在 application.yml 中指定属性:

springdoc:
    remove-broken-reference-definitions: false

【讨论】:

    猜你喜欢
    • 2022-12-08
    • 2020-04-05
    • 1970-01-01
    • 2023-01-30
    • 2021-11-09
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多