【发布时间】: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