Как добавить дополнительные атрибуты к ссылкам, используя 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;
  }
Другие вопросы по тегам