2013-12-03 7 views
3

Я создаю REST API. У меня есть модель домена, состоящая из bean-компонентов, чем не может распространять ResourceSupport. Каков наилучший способ разоблачить их как ресурсы с помощью Spring-HATEOAS?Spring-HATEOAS без расширения ResourceSupport

В случае, если это невозможно, что является лучшим способом включить ссылки на JSON, сгенерированные компонентами?

ответ

9

Вы можете использовать Resource обертку:

MyModel model = ... 
Resource<MyModel> resource = new Resource(model); 
resource.add(linkTo(... 
+2

Спасибо! Вы знаете какой-нибудь учебник, где я могу узнать больше об этом? – Andres

+1

@ Andres Есть некоторые на Spring HATEOAS [домашняя страница] (http://projects.spring.io/spring-hateoas/). В [Spring Developer Channel] (http://www.youtube.com/user/SpringSourceDev) на YouTube также есть несколько отличных видеороликов для создания спокойных сервисов с использованием Spring HATEOAS. – zeroflagL

1

Вы должны отделить ресурсы от вашего домена.

Даже если они могут показаться похожими, модель и ресурсы домена сильно отличаются.

Объекты домена - это ваше внутреннее представление. Реализация имеет ограничения в зависимости от того, как реализована ваша бизнес-логика/персистентность и другое дизайнерское решение. Например, они могут быть объектами JPA или могут быть неизменными.

Ресурсы представляют собой внешний мир. Может быть один-к-одному с Доменом или совершенно другим. Это не так редко, имея несколько представлений ресурсов для одного объекта домена.

Но, прежде всего, реализация ресурсов предназначена для отправки/приема на проводе. Таким образом, у него есть ограничения для того, чтобы быть развязанным/несогласованным.

Таким образом, ваше приложение должно иметь отдельные объекты для домена и ресурсов. С помощью Spring HATEOAS отображение выполняется с использованием ассемблеров ресурсов.

Вы можете посмотреть на этом примере приложения: https://github.com/opencredo/spring-hateoas-sample и связанное с этим сообщение: Implementing HAL hypermedia REST API using Spring HATEOAS

+1

Хотя это не отвечает на вопрос, это полезно знать! – Archangel33

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