这一次我真的很困惑和卡住... 我正在春季启动(1.5.3)应用程序公开HAL风格的REST API使用spring-讨厌的图书馆。一些端点已经正确工作并返回HAL链接。目前我正在尝试更改另一个端点以使用HAL返回响应,但结果以"collection+json"
样式序列化。HAL风格的渲染问题与春天仇恨
我发现迄今: 有在Spring上下文3个ObjectMapper
实例:
objectMapper
_halObjectMapper
halObjectMapper
我转换了所有三个响应这些,发现前两个产生"collection+json"
输出("links"
与"rel"
),第三个产生预期的HAL风格("_links"
没有"rel"
)。
为什么有三个,我该如何检查和控制这些objectMappers中的哪一个被用来呈现响应?我的其他终端如何返回预期的格式?
这里是我的简化代码,在情况下,它的任何权益:
@RestController
public class SearchController{
@RequestMapping(value = "/search", produces = { "application/hal+json" }, method = RequestMethod.GET)
public ResponseEntity<SearchResponse> search(...){
SearchResponse searchResponse = ...; // search & build response
return new ResponseEntity<>(searchResponse, HttpStatus.OK);
}
}
public class SearchResponse {
@JsonProperty("_meta")
private PageSortInfo meta;
@JsonUnwrapped
private Resources<Resource<SearchResultItem>> resultlist;
...// getters & setters
}
的反应应该是这个样子:
{
"_meta" : {
...
},
"_embedded" : {
"searchResultItemList" : [ {
...,
"_links" : {
"self" : {
"href" : "..."
}
}
},
...
]
},
"_links" : {
"self" : {
"href" : "http://localhost:8882/api/search"
}
}
}