Spring-HATEOAS без расширения ResourceSupport

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

Если это невозможно, как лучше всего включить ссылки в JSON, сгенерированный bean-компонентами?


person Andres    schedule 03.12.2013    source источник


Ответы (2)


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

MyModel model = ...
Resource<MyModel> resource = new Resource(model);
resource.add(linkTo(...
person a better oliver    schedule 12.12.2013
comment
Благодарю вас! Вы знаете какой-нибудь учебник, где я могу узнать больше об этом? - person Andres; 16.12.2013
comment
@Andres Некоторые из них есть на домашней странице Spring HATEOAS. На канале разработчиков Spring на YouTube также есть несколько отличных видеороликов о создании сервисов отдыха с использованием Spring HATEOAS. - person a better oliver; 16.12.2013

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

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

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

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

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

Поэтому ваше приложение должно иметь отдельные объекты для домена и ресурсов. В Spring HATEOAS сопоставление выполняется с помощью сборщиков ресурсов.

Вы можете взглянуть на этот пример приложения: https://github.com/opencredo/spring-hateoas-sample и связанный с ним пост: Реализация HAL Hypermedia REST API с использованием Spring HATEOAS< /а>

person Nicus    schedule 21.05.2016
comment
Хотя это не отвечает на вопрос, это полезно знать! - person Archangel33; 31.08.2016