我有一个 Web 应用程序,我在其中使用 Spring MVC 和带有 HypermediaType HAL 的 Spring Hateoas。在我的控制器中,我使用资源类来放入主题列表。问题是,如果我放入一个元素的列表,则生成的 json 的结构与我放入 2 个元素的结构不同。如果列表只包含一个元素,它将删除列表并将其作为单个对象返回。在两个 Controller 方法下方,我粘贴了生成的 Json。
我现在想知道,为什么会出现这样的行为以及如何强制 Hateoas 在生成的 json 中使用列表?
@Controller
@RequestMapping(value = "/collections")
public class CollectionController {
@RequestMapping
public HttpEntity<Resources<Subject>> getOneSubject() {
Subject subject = new Subject();
Resources<Subject> subjects = new Resources<>(asList(subject));
return new ResponseEntity<>(subjects, HttpStatus.OK);
}
/*HTTP-Response Body:
{
"_embedded": {
"subject": {
"name": null
}
}
}
*/
@RequestMapping
public HttpEntity<Resources<Subject>> getTwoSubjects() {
Subject subject = new Subject();
Resources<Subject> subjects = new Resources<>(asList(subject, subject));
return new ResponseEntity<>(subjects, HttpStatus.OK);
}
/*HTTP-Response Body:
{
"_embedded": {
"subjectList": [
{
"name": null
},
{
"name": null
}
]
}
}*/
}
Hateoas 配置:
@Configuration
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)
public class HateoasConfig {
}