Restful API:实现版本处理

时间:2014-12-02 06:47:37

标签: asp.net api rest asp.net-web-api

我在相同的域中有API的deference版本,我想通过将版本号放在url中来管理它,如下所示

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中添加了更改。 现在我想实现版本控制,我找到了这个目标的方法。

  1. 在应用程序中使用V1和V2来路由和管理版本控制(u.e:SDammann WebApi Versioning
  2. 通过源控制器和Web服务器管理版本控制(对于每个版本都存在分支,如果是ASP.net(IIS),则为每个版本创建子应用程序)
  3. 在第一种方法中,我认为我们必须复制控制器和操作,因此如果在获取用户操作中发现错误,我们必须在两个操作中更改它(冗余

    在第二种方法中,如果发生了一些错误,我们必须检查旧分支,修复它并将其合并为新版本分支。

    是否有更好的方法来管理和实施API版本控制?

1 个答案:

答案 0 :(得分:0)

分支不同的服务版本可能会导致部署噩梦,因为您需要同时维护/测试/部署许多单独的应用程序。因此,使用单个应用程序和适当的路由系统的想法对我来说看起来更有希望。但是,您需要保证您没有共享代码路径,否则您可能会在一个版本中使用另一个版本引入新问题。复制怎么样?我相信,如果你想在代码级别分离你的版本以保证安全的修改,那么在某种程度上它是不可避免的。一些专业人员甚至think您不需要在旧版本中执行错误修复:任何错误修复只会引入新的服务版本。