我可以在 swagger 2.0 中定义嵌套数组对象吗
Posted
技术标签:
【中文标题】我可以在 swagger 2.0 中定义嵌套数组对象吗【英文标题】:Can i define nested array objects in swagger 2.0 【发布时间】:2015-11-22 06:51:02 【问题描述】:我们将 Swagger 2.0 用于我们的文档。我们正在以编程方式直接从我们的数据设计文档中创建 swagger 2.0 规范。
我们的模型非常复杂且嵌套。我想了解我们能否定义内联定义的嵌套数组对象。
例如:
"definitions":
"user":
"type": "object",
"required": ["name"],
"properties":
"name":
"type": "string"
,
"address":
"type": "array",
"items":
"type": "object",
"properties":
"type":
"type": "string",
"enum": ["home",
"office"]
,
"line1":
"type": "string"
,
"Person":
"type": "object",
"properties":
"name":
"type": "string"
我们有很多在模型中遇到这种情况的情况,此时定义#ref 不是我们想要考虑的选项。我们需要这个来内联处理。
根据以下帖子:https://github.com/swagger-api/swagger-editor/issues/603#evenenter code here
t-391465196 似乎不支持处理内联定义的嵌套数组对象。
由于许多大企业的数据模型非常复杂,我们希望在 swagger 2.0 规范中支持此功能。
有没有想过要添加这个功能。
【问题讨论】:
看起来这个问题属于swagger主页/论坛/bugtracker。 许多框架会自动为您创建$ref
模式。您能否从建模的角度分享更多为什么这是不可能的?
@fehguy 能否请您指出一些将创建 $ref 模式的框架。
好吧,支持大摇大摆的swagger-jaxrs
会做到这一点。如果您有一个复杂类型的属性,$ref
将自动创建。
查看这个网址,它没有标记为已解决,但我认为没问题:link
【参考方案1】:
您的文档无效,这与嵌套数组无关:items
内的 Swagger 2.0 架构中不允许使用属性 Person
。
schema 中唯一允许的属性是:$ref
、format
、title
、description
、default
、multipleOf
、maximum
、exclusiveMaximum
、@98765433 exclusiveMinimum
,maxLength
,minLength
,pattern
,maxItems
,minItems
,uniqueItems
,maxProperties
,minProperties
,required
,enum
,additionalProperties
,type
、items
、allOf
、properties
、discriminator
、readOnly
、xml
、externalDocs
、example
。
【讨论】:
以上是关于我可以在 swagger 2.0 中定义嵌套数组对象吗的主要内容,如果未能解决你的问题,请参考以下文章
如何在 .NET Core 2.2 WebApi 和 Azure AD 2.0 中配置 Swagger?
是否可以在 ASP .NET Core 中使用 Swashbuckle 在 Swagger 2.0 和 Open API 3 格式中公开相同的 Swagger JSON?