我想使用带有header属性的Springs @RequestMapping来检测值为Accept
的{{1}}标头。计划是为版本2另外映射另一个方法,其值为application/json;version=1.*
。
Spring似乎忽略了版本值。我猜测它将等号作为另一个标题属性。
有解决方法吗?
附注:
application/json;version=2.*
属性答案 0 :(得分:1)
Spring请求映射似乎忽略了媒体类型参数。 您可以通过手动将请求路由到首选端点来解决此问题。
@RequestMapping(value = "/", headers = "Accept=application/json")
@ResponseBody
String request(@RequestHeader HttpHeaders headers){
for(MediaType mediaType : headers.getAccept()){
if(mediaType.isCompatibleWith(MediaType.APPLICATION_JSON)){
if(mediaType.getParameter("version").startsWith("1.")){
return v1();
}else if(mediaType.getParameter("version").startsWith("2.")){
return v2();
}
}
}
return "error";
}