Итак, скажем, у меня есть существующее приложение, в котором есть две конечные точки/люди и/брюки. Вызов GET/people возвращает:
[
{
"name":"john",
"age":37,
"pants":[
{
"color":"green",
"brand":"levis",
"size":"medium"
},
{
"color":"indigo",
"brand":"jncos",
"size":"medium-with-huge-legs"
}
]
},
{
"name":"june",
"age":23,
"pants":[
{
"color":"pink",
"brand":"gap",
"size":"small"
}
]
}
]
Если бы я использовал Spring Data Rest и позвонил GET/person, я получил бы что-то вроде:
{
"_links":{
"next":{
"href":"http://myapp.com/people?page=1&size=20"
},
"self":{
"href":"http://myapp.com/people{&page,size,sort}",
"templated":true
},
"search":{
"href":"http://myapp.com/people/search"
}
},
"_embedded":{
"people":[
{
"name":"john",
"age":37,
"_links":{
"self":{
"href":"http://myapp.com/people/john"
},
"pants":{
"href":"http://myapp.com/people/john/pants"
}
}
},
{
"name":"june",
"age":23,
"_links":{
"self":{
"href":"http://myapp.com/people/june"
},
"pants":{
"href":"http://myapp.com/people/june/pants"
}
}
}
]
}
}
Скажем, у меня есть куча существующих клиентов, которые я не хочу менять - есть ли способ отключить части гипермедиа ответа в некоторых случаях (например, Accept = "application/json" ), но разрешить это они для других (Accept = "hal + json" )?
Спасибо!
Обновление
Хорошо - так кажется, что, к моему огорчению, то, что я ищу, не поддерживается. Я не понимаю, почему SDR сильно склоняется к Hypermedia... но я не покупаю это, предоставляя возможность "отключить" гипермедиа на основе заголовка, тем самым предоставляя больше вариантов, это плохо.
В стороне, я немного не уверен, как на самом деле добиться этого через мои собственные контроллеры. Если я создаю Контроллер и попытаюсь переопределить /people
RequestMapping с помощью команды `production = "application/json", я могу вернуть "raw" json обратно с помощью Accept = "application/json", но если я передаю Accept = "application/hal + json" Я получаю 406 с "Не могу найти приемлемого представления". Похоже, что сопоставления ресурсов SDR не сопоставляются с типом контента... любые предложения?