如果我要在.NET中创建一个版本化的RESTful API(在我正在进行版本控制的方式上并不重要,但为了论证,我可以说我在做api / v1 / users) - 我我对人们如何在版本控制和代码方面处理这个问题感兴趣。在我的情况下,它是一个私有API,但它将由iOS应用程序使用,所以我不能保证所有客户端将同时升级,所以我必须保持旧API运行一段时间。
所以说我已决定对用户返回的数据实施重大更改,因此我创建了api-api / v2 / users的v2。我是否在GIT中进行了这些更改,例如,为V2创建一个新分支,然后在工作副本之上进行这些更改,然后单独构建每个分支并将每个分支项目部署到v2文件夹
像:
/branchV1/user.cs -> Built by Jenkins -> Deployed to V1/user
/branchV2/user.cs -> Built by Jenkins -> Deployed to V2/user
Git分支:
MASTER ====v1========================v2==========================
\ \ \
\ \ BRANCH V2 =================
BRANCH V1 ===========================================
\ /
BRANCH V1 Bug Fix ===
显然,这会带来开销,在创建Jenkins时必须将每个分支添加到Jenkins,然后更新AWS上的Deploy过程以在相应的位置安装相关的WebDeploy软件包。在这种情况下,MASTER也不会经常发货,它将是Dev,不断发布的版本将是分支机构
或者人们只是拥有不同版本的项目,例如v1 / Users.cs v2 / Users.cs - 具有不同的命名空间,然后处理将路由到的代码。
后者 更容易处理,因为只有一个项目可以在任何一点部署到前端。然而,对我来说,以及代码版本控制的核心价值感觉很麻烦。
我已经看过很多关于REST版本控制的URL命名与Header命名等的讨论,但没有关于人们如何在其代码库和版本控制中实现版本控制。
谢谢大家
答案 0 :(得分:0)
在我看来,你有两个选择: