Spring boot hypermedia преобразует дочерние элементы в массив вместо объекта - PullRequest
0 голосов
/ 15 апреля 2019

Я использую spring-boot-1.5.8 и spring-boot-hateoas в моем проекте. Пожалуйста, найдите код ниже

@SpringBootApplication
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
public class SpringBootK8Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootK8Application.class, args);
    }

}

Контроллер

 @GetMapping("/greeting")
    public ResponseEntity<Greeting> greeting(@RequestParam(value = "name", required = false, defaultValue = "World") String name) {
        Greeting greeting = new Greeting(String.format("Hello, %s!", name));
        greeting.add(linkTo(methodOn(HelloController.class).greeting(name)).withSelfRel());
        Link link = new Link("http://localhost:8080/something").withRel("ACTIONS");
        SuperLink superLink = new SuperLink(link, MediaTypes.HAL_JSON_VALUE,"GET","/v1/books","v1/bookBy");
        greeting.add(superLink);
        return new ResponseEntity<>(greeting, HttpStatus.OK);
    }

Фактический объем производства:

{
  "content": "Hello, World!",
  "_links": {
    "self": {
      "href": "http://localhost:9086/greeting?name=World"
    },
    "ACTIONS": {
      "href": "http://localhost:8080/something",
      "template": "http://localhost:8080/something/v1/books",
      "type": "application/hal+json",
      "method": "GET",
      "describedBy": "http://localhost:8080/something/v1/bookBy"
    }
  }
}

Ожидаемый результат:

{
  "content": "Hello, World!",
  "_links": {
    "self": {
      "href": "http://localhost:9086/greeting?name=World"
    },
    "ACTIONS": [
      "href": "http://localhost:8080/something",
      "template": "http://localhost:8080/something/v1/books",
      "type": "application/hal+json",
      "method": "GET",
      "describedBy": "http://localhost:8080/something/v1/describedBy"
    ]
  }
}

Я хотел бы показать действие в виде массива. Если я добавлю более одного элемента в атрибут ACTIONS, он покажет массив, но если у нас будет только один элемент, он будет показан как объект. Я всегда хотел бы отображать этот элемент в виде массива. Любая помощь будет действительно заметной.

...