Как добавить дополнительные атрибуты к ссылкам, используя Spring Hateoas и HAL?
Я использую Spring Boot и Spring Hateoas, настроенные с помощью @EnableHypermediaSupport(type = HAL). Хотя в базовом сценарии это работает нормально, я бы хотел иметь возможность добавлять дополнительные атрибуты к ссылкам. Например, легко вернуть ссылки, которые будут отображать такие ссылки:
{
"_links":{
"self":{
"href":"http://localhost/"
},
"something":[
{
"href":"http://some-url.com/something1"
},
{
"href":"http://some-url.com/something2"
}
]
}
То, что я хочу сделать, это добавить больше атрибутов для объектов в чем-то rel. Например:
{
"_links":{
"self":{
"href":"http://localhost/"
},
"something":[
{
"name":"something1",
"href":"http://some-url.com/something1"
},
{
"name":"something2",
"href":"http://some-url.com/something2"
}
]
}
}
Каков наилучший способ сделать это (предпочтительно используя ControllerLinkBuilder) без создания собственных DTO? Я попытался создать свой собственный подкласс Link и добавить поле для имени (и получателей и установщиков), но они, кажется, игнорируются.
1 ответ
Поддержка HAL получит значительное обновление, поэтому я бы подождал.
Я не знаю, как вы используете свой подкласс, но в основном такой подход работает. Вы не должны забывать аннотацию на вашем name
поле. Пример:
public SuperLink extends Link {
@XmlAttribute
private String name;
public SuperLink(Link link, String name) {
super(link.getHref(), link.getRel());
this.name = name;
}