如何公开其他模型:从 Springfox 迁移到 Springdoc

Posted

技术标签:

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

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

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

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

用springdoc怎么做?

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

【问题讨论】:

很难理解您的问题。见:***.com/help/how-to-ask 【参考方案1】:

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

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

https://springdoc.github.io/springdoc-openapi-demos/faq.html#how-can-i-customise-the-openapi-object-

【讨论】:

谢谢。我使用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

【讨论】:

以上是关于如何公开其他模型:从 Springfox 迁移到 Springdoc的主要内容,如果未能解决你的问题,请参考以下文章

如何从gitlab迁移到github

如何将模型从一个 django 应用程序迁移到一个新应用程序中?

如何在 Django 中使用 South 将数据从一个模型迁移到另一个模型?

如何通过引用外键将 Django 模型移动到其他应用程序?

迁移回滚期间无法从其他应用导入 Django 模型

如何从CentOS Linux 8迁移到CentOS Stream 8