Дополнительно формат отключить HATEOAS весной данные

Итак, предположим, у меня есть существующее приложение, которое имеет две конечные точки /люди и /брюки. Вызов 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")?

спасибо!

Обновлено

хорошо-так что, к моему огорчению, то, что я ищу, не поддерживается. Я understadn почему СДР сильно склоняется в сторону гипермедиа... но я не покупаю, что предоставление возможности "отключить" гипермедиа на основе заголовка, таким образом, предоставляя больше опций, - это плохо.

это в стороне, я немного не уверен, как на самом деле достичь этого через мой собственный Контроллеры. Если я создам контроллер и попытаюсь переопределить /people RequestMapping с 'produces =" application/json" я могу получить "raw" json обратно с Accept="application/json", но если я передам Accept="application / hal+json", я получу 406 с "не смог найти приемлемое представление". Похоже, что сопоставления ресурсов SDR не сопоставляются с типом контента ... есть предложения?

1 ответов


короткий ответ: вы не можете использовать spring-data-rest без hateoas. Если вы хотите создать свой веб-сервис без hateoas, вам придется написать свои собственные контроллеры (которые все еще могут использовать репозитории spring-data).

цитата Оливера Гирке в это так пост:

на самом деле вся моя точка зрения: сервер просто делает достойный отдых. Если это ломает клиента, это клиент, который должен быть исправлен (щипанным.) Поэтому гипермедиа аспект фундаментальный для весны Данные отдыхают, и мы не собираемся отступать от этого. Это, наверное, не удовлетворение в вашей конкретной ситуации, но должен ответить на вопрос по крайней мере.): - Оливер Гирке!--1-->