宁静的API:实现版本处理
问题描述:
我有API的尊重版本在同一个域中,我想通过把版本号的网址,如下所示宁静的API:实现版本处理
mydomain.com/api/v1/user/getall
mydomain.com/api/v1/user/add
mydomain.com/api/v2/user/getall
mydomain.com/api/v2/user/add
想象这种情况下对其进行管理:在这两个版本 获取用户有相同的功能,但在V2中添加更改。 现在我想要实现版本控制,我发现了这个目标的两种方法。在应用
- 使用V1和V2中的路由和管理版本(UE:SDammann WebApi Versioning)
- 管理通过源控制器和网络服务器版本(对于每个版本存在的分支和在ASP.net的情况下(IIS)为每个版本的子应用程序)
在第一种方法,我认为我们必须复制控制器S和行动,所以如果发现例如错误在得到用户的行动,我们必须在这两个动作(冗余改变)
第二种方法如果发生了一些错误,我们必须签出旧分支,修复它并通过新版本分支进行合并。
剂量存在管理和实施API版本控制的更好方法吗?
答
不同服务版本的分支可能导致部署梦魇,因为您需要同时维护/测试/部署许多独立的应用程序。所以,想一想单一的应用程序和适当的路由系统在它看起来对我来说更有希望。但是,你需要保证你没有共享的代码路径,否则你可能会在一个版本中引入新的问题与另一个版本一起工作。怎么样复制?无论如何,如果您想在代码级别分离您的版本以保证安全修改,我认为它在某种程度上是不可避免的。有些专业人士甚至是think,您不需要在旧版本中执行错误修复:任何错误修复都会引入新的服务版本。
是的,在相同的WebAPI中使用URL路由将请求映射到正确的控制器版本。 – Chris 2014-12-02 10:42:13
@Chris但是在这种方法中,如果发生应用程序的问题,所有版本都会失效!可以吗? 我真的很困惑寻找最佳方法 – Behrooz 2014-12-02 10:44:37
你还没有指定任何DR要求。如果您正在寻找基于版本号的不同内容,那么路由是最干净的方式。如果您正在研究灾难恢复情况,那么这是一个不同的问题。另外,为每个版本保留单独的分支意味着你将有两个流来维护,这是不可取的。 – Chris 2014-12-02 10:48:17