Добавление ссылок по умолчанию с помощью Spring HATEOAS

У меня есть несколько объектов JPA, каждая из которых управляется репозиториями Spring Rest Data, и я хочу перегрузить метод POST на одном из них, чтобы сделать один вызов сброса, а затем в остальном быть точно таким же.

Чего я не хочу делать, так это создания всех моих объектов и отношений с нуля, я просто хочу получить именно то, что Spring дала бы мне по умолчанию, если бы я не предоставил свой собственный метод.

Попытка 1:

Создайте контроллер, который выглядит так:

@RepositoryRestController
public class Entity0Controller {
    @Autowired
    Entity0DataRestRepository repo;

    @PostMapping(path = "/entity0")
    public Resource<Entity0> createEntity0(Entity0 e)
    {
        e.setName("I have been changed");
        return new Resource<>(repo.save(e));
    }
}

Ошибка, которую я возвращаю:

Circular view path [entity0]: would dispatch back to the current handler URL [/entity0] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

Попытка 2:

Измените функцию POST на:

@PostMapping(path = "/entity0")
public @ResponseBody Entity0 createEntity0(Entity0 e)
{
    e.setName("I have been changed");
    return repo.save(e);
}

Теперь я уклоняюсь от ошибки кругового пути обзора, но вообще не получаю никаких ссылок.

Я чувствую, что я близок, и если кто-то захочет взглянуть на MCVE / SSCCE (всего менее 20 строк кода), код здесь: https://github.com/soandos/spring-rest-override-example

Вам действительно нужен собственный контроллер? Разве это нельзя сделать в обработчике событий? docs.spring.io/spring-data/rest/docs/current/reference/html/‌…

Alan Hay 17.12.2018 10:31

@AlanHay, смогу ли я таким образом получить свойства HTTP-вызова? В частности, мне понадобится информация о сертификате пользователя (клиента).

soandos 17.12.2018 15:17

Наверное. Вы можете попробовать стандартный Spring Interceptor, который хранит соответствующие данные в ThreadLocal для последующего использования. 1. stackoverflow.com/questions/46953039/… 2. stackoverflow.com/a/53399919/1356423

Alan Hay 17.12.2018 16:59
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
204
0

Другие вопросы по теме