这将有效:
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json"}) {
.......
}
如果我像下面那样添加另一个值,那么它将失败并告诉我:
请求的资源不允许使用指定的HTTP方法 (不支持请求方法'POST')
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json","content-type=application/xml"}) {
.......
}
我想这是因为Spring认为两个内容类型值具有“AND”关系,但我希望它们是“OR”。
有什么建议吗?
谢谢!
答案 0 :(得分:33)
如果您使用的是 Spring 3.1.x 。您可以查看@RequestMapping注释的消耗,生成属性。这是关于改进的Spring博客文章:
http://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements/
上述文档中的代码段:
@RequestMapping(value="/pets", headers="Content-Type=application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// ...
}
替换为:
@RequestMapping(value="/pets", consumes="application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// ...
}
此外,如果您需要多种媒体类型。您可以执行以下操作:
produces={"application/json", "application/xml"}
consumes={"application/json", "application/xml"}
答案 1 :(得分:22)
您是否尝试过content-type=application/json,application/xml
?
不确定它是否可行但在其中放置两个content-type
标题我认为只有一个会赢。
或
对于使用不同RequestMapping
标题的同一方法,可能会使用两个content-type
注释吗?