Я просмотрел этот вопрос, который направлен на решение проблемы взрыва медиа-типа REST. Одно из предложений заключалось в создании медиа-типа, описывающего коллекцию всего. Так, например, у нас может быть 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
также были задокументированы.