This will work:
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json"}) {
.......
}
If I add another value to it like the following, then it will fail and tell me this:
The specified HTTP method is not allowed for the requested resource (Request method 'POST' not supported)
@RequestMapping(value = "/test", method = RequestMethod.POST,
headers = {"content-type=application/json","content-type=application/xml"}) {
.......
}
I guess this is because Spring thinks the two content type values have "AND" relationship but instead I want them to be "OR".
Any suggestions?
Thanks!
If you are using Spring 3.1.x. You can look at using consumes, produces attributes of @RequestMapping annotation. Here is the Spring blog post on the improvements:
http://spring.io/blog/2011/06/13/spring-3-1-m2-spring-mvc-enhancements/
Snippet from the doc above:
@RequestMapping(value="/pets", headers="Content-Type=application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// ...
}
is replaced by:
@RequestMapping(value="/pets", consumes="application/json")
public void addPet(@RequestBody Pet pet, Model model) {
// ...
}
In addition, if you need multiple media types. You can do the following:
produces={"application/json", "application/xml"}
consumes={"application/json", "application/xml"}