rest - 使用 Spring MVC 内容协商对 html json和xml作出响应

  显示原文与译文双语对照的内容
0 0

我在internet上找到的所有示例都将使用json的内容协商,xml 等等 只有一种方法生成所有内容:

@RequestMapping(produces={"text/html","application/json"}) public List<Product> list() { return productDAO.list(); }

我试图用 ContentNegotiationManager,但我什么都没有。

时间: 原作者:

0 0

一种方法可以返回不同内容类型的响应。 某些你可以使用默认设置获得,有些你还必须配置。 举个例子,跟你的很相似


@RequestMapping(value="/response", method=RequestMethod.GET, produces={MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
public @ResponseBody Foo multipleTypes() {
 return new Foo();
}

如果在类路径上有JAXB2和Jackson库,这种方法可以返回XML和 JSON,更多的Spring MVC 将自动配置转换器。

当推理是否会返回XML或者JSON时,它的内容协商将发挥作用。 如果请求带有路径 比如 /response.json 或者 /response.xml的后缀,则将基于它设置 resonse 。 分辨率也可以基于参数,所以 /response?format=xml 。 最后,如果请求具有 Accept接受XML或者 JSON header响应将转换为相应的类型。 这构成了一个PPA策略( 路径,参数,接受) 。

换句话说,如果提供适当的转换器实现并正确配置它们,则可以获得一个返回不同表示的方法,你可以根据PPA策略来控制。

一个出色的博客文章,你可以在这里找到 http://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc

...