我可以在 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 heret-391465196 似乎不支持处理内联定义的嵌套数组对象。

由于许多大企业的数据模型非常复杂,我们希望在 swagger 2.0 规范中支持此功能。

有没有想过要添加这个功能。

【问题讨论】:

看起来这个问题属于swagger主页/论坛/bugtracker。 许多框架会自动为您创建$ref 模式。您能否从建模的角度分享更多为什么这是不可能的? @fehguy 能否请您指出一些将创建 $ref 模式的框架。 好吧,支持大摇大摆的swagger-jaxrs 会做到这一点。如果您有一个复杂类型的属性,$ref 将自动创建。 查看这个网址,它没有标记为已解决,但我认为没问题:link 【参考方案1】:

您的文档无效,这与嵌套数组无关:items 内的 Swagger 2.0 架构中不允许使用属性 Person

schema 中唯一允许的属性是:$refformattitledescriptiondefaultmultipleOfmaximumexclusiveMaximum、@98765433 exclusiveMinimummaxLengthminLengthpatternmaxItemsminItemsuniqueItemsmaxPropertiesminPropertiesrequiredenumadditionalPropertiestypeitemsallOfpropertiesdiscriminatorreadOnlyxmlexternalDocsexample

【讨论】:

以上是关于我可以在 swagger 2.0 中定义嵌套数组对象吗的主要内容,如果未能解决你的问题,请参考以下文章

如何重用 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?

Mantle 2.0 无法为嵌套数组中的符号解析 JSON

如何将 swagger 2.0 JSON 文件分解为多个模块

Web Api 2.0中使用Swagger生成Api文档的2个小Tips