Spring Boot API版本控制(代码体系结构)

时间:2017-05-31 09:23:40

标签: spring-boot code-design

我在Spring Boot中开发服务。 现在假设我已经开发了10个没有指定任何版本的API,并在生产时发布代码。

现在两个API需要改变,所以我需要创建这两个API的新版本。

那么我应该如何创建我的代码设计呢?我应该创建一个基本控制器&那么每个新版本都会创建一个扩展主控制器的新控制器?我应该使用inrerfaces吗?或者有更好的方法。

另外,我计划最多只保留最多两个/三个版本的API。另外我们希望不支持旧版本API太久,所以设计也应该支持轻松删除旧版本?

1 个答案:

答案 0 :(得分:0)

使用网址版本方法。使用@RequestMapping()注释添加重载方法。在RequestMapping的值中指定版本号。

@Controller
@RequestMapping(value="/controller")
public class SampleController {

    @RequestMapping(value = "/sample", method = RequestMethod.GET)
    public ResponseEntity<?> getDefaultData() {

    }

    @RequestMapping(value = "/sample/v1", method = RequestMethod.GET)
    public ResponseEntity<?> getData() {

    }

    @RequestMapping(value = "/sample/v2", method = RequestMethod.GET)
    public ResponseEntity<?> findData() {

    }
}

每个版本的Web服务都会以以下格式获取不同的URL:
    例如: -

    http://example.com/controller/sample/v1
    http://example.com/controller/sample/v2
    http://example.com/controller/sample

依旧......

通过这种方法,您可以获得以下好处:

  1. 您始终知道您正在与哪个版本进行对话。
  2. 保持向后兼容性。
  3. 您不必担心依赖性问题。每个版本都有完整的服务。您只需确保不要在通话之间混合版本(但这取决于服务的使用者,而不是您作为开发人员)。