我想使用 Springs @RequestMapping 和 header 属性来检测Accept带有 value的标头application/json;version=1.*。计划是为版本 2 类似地映射另一种方法,该方法将具有 value application/json;version=2.*。
Spring 似乎忽略了版本值。我猜它将等号视为另一个标题属性。
有没有解决的办法?
旁注:
- 我无法更新 Spring 版本以支持该
consumes属性 - 我无法更改请求标头的格式
我想使用 Springs @RequestMapping 和 header 属性来检测Accept带有 value的标头application/json;version=1.*。计划是为版本 2 类似地映射另一种方法,该方法将具有 value application/json;version=2.*。
Spring 似乎忽略了版本值。我猜它将等号视为另一个标题属性。
有没有解决的办法?
旁注:
consumes属性似乎spring requestmapping忽略了媒体类型参数。您可以通过手动将请求路由到首选端点来解决此问题。
@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";
}