我正在用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