這一次我真的很困惑和卡住... 我正在春季啓動(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"
}
}
}