以下是我的应用程序代码
@RequestMapping(value = "app/{version}/register", method = RequestMethod.POST, consumes = "application/json")
@ResponseBody
public RegisterMemberResponse registerMember(@Valid @RequestBody RegisterMemberRequest request,@PathVariable Integer version){
return registerservice.register(request);
}
对于应用版本1,我的RegisterMemberRequest类是
public class RegisterMemberRequest{
@NotNull
private String firstName;
@NotNull
private String lastName;
//gatter & setter...
}
对于应用版本2,我的请求类是
public class LatestRegisterMemberRequest extends RegisterMemberRequest{
@NotNull
private String middleName;
//getter & setter...
}
所以我怎么能改变我的registerMember()方法,以便我可以同时服务于版本1和版本1 2请求uri。
答案 0 :(得分:0)
如果您想将版本号硬编码到网址中(我不建议这样做),您可以轻松地使用两种不同的控制器方法,使用硬编码路径,例如app/v1/register
和app/v2/register
。
另一种方法是使用内容协商并根据给定的内容类型路由请求,例如, application/vnd+<YOURCOMPANY>.<DATATYPE_AND_VERSION>+json
,也使用带有@Consumes
注释的单独的休息控制器方法。
答案 1 :(得分:0)
我认为您可以使用Requestmapping-uri-templates-regex,版本号将是@PathVariable
编写您的业务逻辑,以决定响应主体应该依赖于路径变量版本。