【发布时间】:2014-10-15 17:21:50
【问题描述】:
我查看了旨在解决 REST 媒体类型爆炸问题的 this question。其中一个建议是有一个媒体类型来描述 anything 的集合。例如,我们可以有一个application/vnd.collection+json,它是一个具有明确语义的集合,可以保存对其他资源的引用列表:
{
"size": "3"
"elements": [
{ "href" : "http://my.api.com/resource/1" },
{ "href" : "http://my.api.com/resource/2" },
{ "href" : "http://my.api.com/resource/3" }
]
}
我知道减轻闲聊的一种方法是包含资源的嵌入式表示。列表的“通用”媒体类型如何实现这一点?列表的语义不会根据其中的嵌入式资源而改变吗?如果嵌入式资源具有不同的处理规则(理想情况下由媒体类型传达),这一点尤其重要。在这种情况下允许描述嵌入资源的媒体类型的带内信息是否可以?例如,我们可以为链接和嵌入式资源设置application/vnd.collection+json,执行以下操作:
{
"size": "3"
"element-content-type": "application/vnd.link+json"
"elements": [
{ "href" : "http://my.api.com/resource/1" },
{ "href" : "http://my.api.com/resource/2" },
{ "href" : "http://my.api.com/resource/3" }
]
}
如果它包含嵌入式资源:
{
"size": "3"
"element-content-type": "application/vnd.resource+json"
"elements": [
{
"id": "1"
"name": "Cool Resource"
},
{
"id": "2"
"name": "Awesome Resource"
},
{
"id": "3"
"name": "Super Awesome Resource"
}
]
}
假设application/vnd.link+json 和application/vnd.resource+json 也已记录在案。
【问题讨论】:
标签: api rest content-type api-design media-type