|
|
1
1
希望你看到了 在同一个应用程序中拥有两个版本的API已经足够安静了
不知道为什么需要将v1和v2作为单独的应用程序进行构建和部署?除非您计划在生产中进行零停机时间滚动升级 |
|
|
2
1
我想在讨论中提出以下策略,两者都是策略 Continuous Delivery .
基本思想是在客户机和当前实现之间放置一个抽象层。然后介绍抽象层后面的第二个实现。这使您有机会在正常的代码库中继续工作,但可以立即为下一个版本的API提供新功能。 https://martinfowler.com/bliki/BranchByAbstraction.html 功能切换
|
|
|
3
0
如果我面对你所说的情况,我会首先尝试保持我的新版本(v2)与我的第一个版本(v1)向后兼容。如果是这样的话,您只需添加功能并更新API文档,只保留一个活动的代码库。我认为您甚至可以向响应负载添加内容,只要返回的数据不会破坏任何人的代码—就像向现有数据库模式添加字段一样。 如果v2与v1不向后兼容,您可以将v1移到另一个服务器上,并通知您的用户它将在那里放置一段规定的、有限的时间,以便他们有时间进行必要的代码更改以切换到v2,但也要通知他们此版本不再更新,如果他们有问题,他们需要切换到新版本。因此,v2是代码库的主版本,没有其他正在开发的分支。 我不认为这对你有帮助。 |
|
|
4
-1
v1/v2困境是一个强烈的暗示,您实际上没有一个restapi开始。REST体系结构中的对等方通过客户机交换或多或少标准化的内容,请求表示他们理解的媒体类型。这种技术称为内容类型协商。当然,写得不好的服务器可能会忽略建议的媒体类型,而发送一个客户端不理解的媒体类型。但是,这将阻止客户端与服务器进一步交互。因此,一个性能良好的服务器应该尽力为客户机请求提供服务。 根据菲尔丁的说法:
媒体类型描述了与这种媒体类型交换的有效负载的语法,以及该表示中每个元素的语义。在有意义的链接关系名称和媒体类型的帮助下,服务器可以教客户机下一个可用的选项,客户机可以在完成任务时使用这些选项。一、 e.想一个以前的响应包含链接关系的情况
REST架构中的客户机不应该关心URI,因此返回一个包含这两者的URI
实际上,需要对描述语法和语义的媒体类型进行版本控制,而不是对URI或API进行版本控制。一、 如果你看一看基于浏览器的Web(REST的大兄弟),尤其是HTML,你会发现它的设计要求新版本保持向后兼容。一、 e.客户端和服务器接收
不管怎样,我希望我能对REST体系结构和如何实现这一点有更多的了解。我很清楚,我的建议可能并不容易实现,尽管一旦你得到了它,你基本上就把客户机从你的API中分离出来,并给了后者一个自由发展的空间,同时又不必担心破坏客户机。仍然会有耦合,但是客户端和服务器都将耦合到媒体类型,而不是相互耦合。在创建一个新的媒体类型之前,它可能是值得寻找的 already existing ones |