Из различных документов и уроков я заработал и узнал следующие моменты:
Spring Data Rest (SDR) используется для предоставления нашего репозитория данных Spring в качестве службы REST, чтобы его можно было использовать для самостоятельного изучения без необходимости создания JAXRS вручную. Он работает только для уровня репозитория, и мы не можем контролировать способ его работы с точки зрения модификации или добавления, кроме конфигурации с использованием
RepositoryRestMvcConfiguration
. Он использует Spring HATEOAS где-то внутри.Spring HATEOAS создан для создания ссылок внутри сущностей, которые мы возвращаем через контроллер или конечные точки REST. У нас есть
ResourceSupport
, чтобы расширить нашу сущность, илиResource
класс-оболочку, чтобы обернуть нашу сущность для создания или добавления ссылок. Существует несколько аннотаций и классов, таких как@EnableHyperediaSupport
иEntityLinks
.
Могут быть некоторые моменты, которые мне еще предстоит изучить или узнать, но мне просто было любопытно, Как мы можем объединить SDR в процесс построения ссылок HATEOAS? Скажем, например.
EntityBean bean = repository.findByName(name);
Resource<EntityBean> resource = new Resource<EntityBean>(bean);
//JaxRsLinkBuilder.linkTo(TestResource.class).withRel("entity") // this also works
//ControllerLinkBuilder.linkTo(TestResource.class).withRel("myRel") // this also works
// I am curious how ControllerLinkBuilder and JaxRSLinkBuilder both are working for JaxRS.
//Here TestResource is my REST service class. now in below line:
resource.add(JaxRsLinkBuilder.linkTo(MyRepository.class).withRel("sdf")); //not working
// MyRepository is SDR exposed repository, which I thought should work but not working.
return resource;
Итак, я просто хотел включить мой открытый репозиторий REST в ручной процесс создания ссылок HATEOAS. Возможно ли это сделать?