【发布时间】:2014-11-05 05:28:37
【问题描述】:
我想描述一个 API,它的字段允许在发布项目时以不同的方式定义值,但只能以一种特定的方式在字段中输出。
例如,我可能想描述一个 API,其中可以像这样创建或更新项目:{"name": "Task", "due": "2014-12-31"} 或像这样:{"name": "Task", "due": {"$date": 1419984000000}},但它只会以第一种方式从 API 返回。
因此 POST/PUT 的架构可能是:
{
"type": "object"
"properties": {
"name": {
"type": "string"
},
"due": {
"oneOf": [
{
"type": "string",
"format": "date"
},
{
"type": "object",
"properties": {
"$date": {
"type": "number"
}
},
"required": ["$date"],
"additionalProperties": false
}
]
}
}
}
而通过 GET 访问的架构会简单得多:
{
"type": "object"
"properties": {
"name": {
"type": "string"
},
"due": {
"type": "string",
"format": "date"
}
}
}
API 的使用者最好知道他们只需要考虑一种可能的输出方法,而不是所有的输出方法。
是否有任何公认的标准方法来指定 JSON 超模式上下文中的不同模式?我曾考虑通过"links" 属性指定这些差异,但我不知道"rel" 我会在什么下定义这些架构,而且看起来非常不标准。
【问题讨论】:
标签: json jsonschema