编写 RESTFul api 应用程序的最佳实践之一是添加版本控制。例如:
http://my-server/api/v1/getData
http://my-server/api/v2/getData
我们的应用程序使用 Spring 框架公开 REST api。我们将一个类标记为 Controller,使用 RequestMapping 注解将 URL 映射到一个函数,并添加一些转换为/从 json 对象转换的对象。
例如:
@RequestMapping(method = RequestMethod.POST, value = "/api/v1/getData")
public @ResponseBody ResponseDataDTO getData(@RequestBody OperationsDetailsTDO details) {...}
现在,我们要提供 API 的第二个版本。大约 2/3 的功能保持不变,而 1/3 的功能正在改变。更改在逻辑和 JSON 对象中。
我想知道如何设计代码。我认为这种代码很难管理:
@RequestMapping(method = RequestMethod.POST, value = "/api/{version-var}/getData")
public @ResponseBody ResponseDataDTO createReleaseFromTemplate(@PathVariable("version-var") Integer version, @RequestBody OperationsDetailsTDO details) {
if (version == 1)
{
doForVersion1();
}
else if (version == 2)
{
doForVersion2();
}
}
这将很难管理,因为在每个功能中都会有不同的分支。只是为了演示这个问题,如果我有一个生成文档的自动工具——它将无法理解 API 是什么。
其次,我想知道我应该如何处理绑定到 JSON 对象的类。我是否需要复制所有这些类以进行细微更改?
谢谢。