1

我正在创建一个 java rest endpoing,并使用 Ruby 使用它。

在 ruby​​/rails 世界中,使用 Active Resource,url 可以是:

/users.json

或者

/users.xml

目前我的控制器方法如下所示:

@ResponseBody
@RequestMapping(value = "/users.json", method = RequestMethod.GET)
public String list(HttpServletRequest request, HttpServletResponse response) {

}

我不想复制此方法以映射到带有 .xml 扩展名的 url。

我可以以某种方式同时处理两个网址吗?

我还必须将内容类型设置为 json 或 xml。

我知道另一种方法是让spring查看请求标头,然后返回json或xml,但我似乎模仿rails的工作方式我需要users.json或users.xml(基于url结构为反对请求头)。

4

2 回答 2

1

使用 @ResponseBody 时,您将绕过 ContentNegotiatingViewResolver。

让您的 url 为 /users 而不是 /users.json 或 /users.xml 并将您在 requestheaders 中的 Accept 标头设置为所需的媒体类型,框架将选择适当的消息转换器并为您完成工作。注意:messageconverter 应该存在于您的类路径中。

希望这可以帮助。

于 2013-02-14T06:41:18.583 回答
1

是的,这可以通过 Spring 的ContentNegotiatingViewResolver. 请参阅此操作方法博客文章:http ://www.mkyong.com/spring-mvc/spring-3-mvc-contentnegotiatingviewresolver-example/

于 2012-12-30T06:08:21.260 回答