使用 Spring MVC 3.2,我在两个不同的控制器中定义了两个方法,并生成以下注释:
@RequestMapping(
method = RequestMethod.GET,
produces={
"application/vnd.myresource.v1+json",
"application/vnd.myresource.v1+xml"
})
public ResponseEntity getResourceMethod_v1()
{
.......
}
@RequestMapping(
method = RequestMethod.GET,
produces={
"application/vnd.myresource.v2+json",
"application/vnd.myresource.v2+xml"
})
public ResponseEntity getResourceMethod_v2()
{
.......
}
当我在请求标头中指定"accept: application/vnd.myresource.v1+json"时,Spring 会正确映射到第一种方法。 而且,当我在请求标头中指定"accept: application/vnd.myresource.v2+json"时,Spring 会正确映射到第二种方法。 但是,当我没有在请求标头中指定"accept:"时(请求默认为"accept:*/*"),Spring 映射到第一种方法。
如何将第二种方法指定为 Spring 的默认映射?
我发现我可以将MediaType.ALL_VALUE添加到我想成为默认值的方法的 produce 块中。
@RequestMapping(
method = RequestMethod.GET,
produces={
"application/vnd.myresource.v1+json",
"application/vnd.myresource.v1+xml"
})
public ResponseEntity getResourceMethod_v1()
{
.......
}
@RequestMapping(
method = RequestMethod.GET,
produces={
MediaType.ALL_VALUE,
"application/vnd.myresource.v2+json",
"application/vnd.myresource.v2+xml"
})
public ResponseEntity getResourceMethod_v2()
{
.......
}