Spring mvc rest端点可以映射到两个不同的URL,例如/users.json和/users.xml吗?

时间:2012-12-29 23:16:25

标签: java spring rest spring-mvc

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

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

/users.json

/users.xml

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

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

}

我不想复制此方法以映射到扩展名为.xml的网址。

我能以某种方式做两个网址吗?

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

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

2 个答案:

答案 0 :(得分:1)

是的,这可以通过Spring的ContentNegotiatingViewResolver来实现。请参阅此博客文章:http://www.mkyong.com/spring-mvc/spring-3-mvc-contentnegotiatingviewresolver-example/

答案 1 :(得分:1)

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

让你的url成为/ users而不是/users.json或/users.xml,并将requestheaders中的Accept标头设置为所需的mediatype,框架将选择适当的messageconverter并为你完成工作。 注意:messageconverter应该出现在类路径中。

希望这有帮助。