2016-05-26 2 views
6

При использовании Spring Data для моего REST API, ответы, возвращаемые в настоящее время включают в себя _links поле:Как удалить элементы гипермедиа из представлений, созданных Spring Data REST?

{ 
    "_embedded": { 
    "users": [ 
    { 
     "imageUrl": "some_image_url", 
     "name": "some name", 
     "id": "57420b2a0d31bb6cef4ee8e9", 
     "_links": { 
     "self": { 
      "href": "http://localhost:8080/users/57420b2a0d31bb6cef4ee8e9" 
     }, 
     "user": { 
      "href": "http://localhost:8080/users/57420b2a0d31bb6cef4ee8e9{?projection}", 
      "templated": true 
     } 
     } 
    }, 
... 

Есть ли способ, чтобы произвести выход, такое, что _links поля скрыто? например .:

{ 
    "_embedded": { 
    "users": [ 
    { 
     "imageUrl": "some_image_url", 
     "name": "some name", 
     "id": "57420b2a0d31bb6cef4ee8e9", 
    }, 
... 

Я считаю, что, потому что я обнажая id поле, _links не действительно необходимы, и в основном только загромождать мои ответы.

+0

Как клиент должен знать, где найти пользователя без ссылки? –

+0

@OliverGierke Я выставил поле «id» в ответе. –

+0

Что делает клиент с простой строкой, которая не является URI? –

ответ

12

Нет. Hypermedia - это фундаментальная черта API REST, а Spring Data REST сильно использует ее, чтобы вы могли создавать клиентов, которые могут использовать ссылки, присутствующие в ответах, для перехода к связанным ресурсам.

Конечно, вы можете отключить своих клиентов, чтобы не использовать эту информацию, но это приведет к значительно более тесной связи (так как вы больше не можете изменять URI на стороне сервера, ваши клиенты ожидают поговорить с выделенного сервера, тогда как с гипермедией вы можете просто указать его на другой сервер и т. д.).

В отличие от многих других самопровозглашенных структур REST, одним из ключевых аспектов дизайна фреймворка является уважение основополагающих принципов в REST и их явное использование. Или, по крайней мере, не создавайте стимулов, чтобы легко их разбить. Это четко выражено в reference documentation и на project website. Узнайте больше о ключевых проектных решениях в this presentation on Spring Data REST и this one on Domain-Driven Design & REST.

Смежные вопросы