2017-05-31 109 views
1

我正在Spring Boot中开发服务。 现在假设我开发了10个API,没有指定任何版本,并且在生产时发布代码。Spring Boot API Versioning(代码体系结构)

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

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

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

回答

0

使用URL版本方法。使用@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. 您不必担心依赖性问题。每个版本都有一套完整的服务。你只需要确保你不要在不同的调用之间混合使用版本(但这取决于服务的消费者,而不是你作为开发人员)。
+0

您只创建了一个控制器。我在问如何为不同版本构建代码。不同版本的不同控制器?或者使用接口? –

+0

你可以使用单个控制器为不同的版本为相同的api。 – Sudhakar

+0

我的项目太大了。显然我可以。那会是很好的代码架构吗? –