【问题标题】:anyOf: {$ref} in swagger JSON schema definitionanyOf: {$ref} 在 swagger JSON 模式定义中
【发布时间】:2014-07-08 20:40:46
【问题描述】:

我尝试使用 swagger 来描述 JSON API。到目前为止看起来不错,但我不知道如何使用 anyOf 结构在 JSON 答案中定义不同对象类型的数组。

以下 JSON Schema 是有效的,它应该描述一个 Article 和 Video JSOn 对象的数组:

{
"Article":{
  "id":"Article",
  "required": ["title"],
  "properties":{
    "title":{
      "type":"string",
      "description": "Title of the article"
    }
  }
},

"Video":{
  "id":"Video",
  "required": ["title"],
  "properties":{
    "title":{
      "type":"string",
      "description": "Title of the video"
    }
  }
},

"News":{
  "id":"News",
  "required": ["instance_data"],
  "properties":{
    "instance_data":{
        "anyOf":[
           { "$ref": "Article" },
           { "$ref": "Video" } ],
      "description": "News instance data"
    }
  }
}
}

但在 swagger 中,对象类型始终显示为 undefined 而不是“文章或视频”。

是否有可能大摇大摆地完成这项工作?

【问题讨论】:

  • Swagger 借鉴了很多 JSON Schema,很多 Swagger 文档都是有效的 JSON Schema,但我认为并不完全兼容。你确定 Swagger 支持“anyOf”吗?
  • 不,这就是我问的原因;-)。但我认为这是一个非常重要的功能,因为在答案中包含不同类型的元素列表是很常见的......
  • 我同意。为什么不提出一个问题,要求 Swagger 支持完整的 JSON 模式?或者甚至只是使用 JSON Schema 和 generate docs and client code?
  • 感谢您的评论,我会看一下 - 我首先选择了 swagger,因为我喜欢他们将文档显示为网页的方式。我想我可能会遗漏一些关于如何使用它的东西,他们可能已经支持它了。

标签: swagger jsonschema swagger-node-express


【解决方案1】:

明确一点:Swagger v2.0 不支持 anyOf。里德更多:https://github.com/swagger-api/swagger-spec/issues/57

【讨论】:

  • anyOf 现在在 OpenAPI 3.0 中得到支持。
猜你喜欢
  • 2020-02-03
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多