我正在用Spring MVC編寫一個Web應用程序。我可以在同一個URI上配置HTML和Spring數據REST JSON嗎?
遵循REST原則,我想在我的應用程序中使用一致的URI來獲取相同的資源,並使用內容協商來選擇是否返回HTML或JSON。在瀏覽器中訪問/people/bob
應該顯示他的個人資料頁面,使用curl
獲取它應該給我一個JSON表示。
但是,because of a semantic limitation (bug?) in the RequestMappingHandlerMapping
,如果我在匹配的URI上定義任何顯式控制器(如HTML控制器),我不能「通過」通用Spring Data REST映射。除了爲每個匹配的HTML控制器手動實現@RestRepositoryController
之外,是否還有其他簡單的方法可以讓Spring MVC內容在HTML和JSON映射之間進行協商?
實例映射不起作用:
@BasePathAwareController
class PersonHtmlController {
@GetMapping(path = '/people/{id}', produces = 'text/html')
ModelAndView person(@PathVariable Person id) {
new ModelAndView('person', [person: id])
}
}
這將產生預期的HTML輸出,但返回一個406,當我問JSON不能接受的。
你試過覆蓋'$ WebMvcConfigurerAdapter configureContentNegotiation',如建議[這裏](http://stackoverflow.com/a/33010537/5873923)? (另一個例子可以[在這裏](http://www.baeldung.com/spring-mvc-content-negotiation-json-xml))。 –
@MarcTarin這些都可以通過Boot自動配置。 – chrylis