Использование HAL-браузера с spring-hateoas БЕЗ spring-data-rest
Мы начинаем новый проект, и мы собираемся использовать spring-hateoas / hypermedia. Браузер HAL также выглядит интересно, поэтому мы хотели проверить это.
Однако браузер HAL, похоже, связан с spring-data-rest, который мы не хотим использовать (по разным причинам).
Как минимум, мы не хотим автоматически выставлять все репозитории в качестве rest-ресурсов, но при этом нам нужно детально определять ссылки для браузера HAL в дополнение к определению ссылок с использованием Spring-hateoas.
Если НЕ автоматически выставлять репозитории, мы должны определить
implements ResourceProcessor<RepositoryLinksResource>
а также
@Override
RepositoryLinksResource process(RepositoryLinksResource resource) {
resource.add(link('/{id}').withRel('my-dummy'))
return resource
}
в дополнение к уже определенным ссылкам (используя hateoas)
link('/{id}').expand(entity.id).withSelfRel()
Это кажется громоздким и не соответствует принципу СУХОЙ. Мы бы не хотели реализовывать метод RepositoryLinksResource метода @Override (ресурс RepositoryLinksResource), так как эти ссылки уже определены в другом месте.
Сначала я думал, что браузер HAL будет повторно использовать ссылки, уже определенные в hateoas. Но, по-видимому, я не правильно понял?
Так что вопрос
Есть ли способ использовать подпружиненный браузер HAL без использования spring-data-rest?
И без необходимости вручную явно указывать ссылки для браузера HAL, когда нет автоматического выставления репозиториев?
1 ответ
Браузер HAL, предоставляемый Spring, не может использоваться без spring-data-rest.
У меня была похожая потребность, и я рассмотрел следующие варианты...
- Упакуйте браузер Spring HAL в отдельный проект (размещенный на другом порту) и пометьте свой оригинальный проект @CrossOrigin.
- Упакуйте универсальный браузер HAL.
Я не пробовал первый подход и поэтому не знаю, столкнетесь ли вы с какими-либо другими проблемами.
Второй подход был сделан путем загрузки браузера HAL ( https://github.com/mikekelly/hal-browser) и добавления его в папку проекта Spring Boot src / resources / public ( https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot).