如何公开其他模型:从 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的主要内容,如果未能解决你的问题,请参考以下文章
如何将模型从一个 django 应用程序迁移到一个新应用程序中?