发布新的 API 版本是一件非常罕见的事情。通常,您只需添加新的可选参数或新方法即可实现向后兼容。例如,如果你有一个名为的方法search
,但现在你对它的工作方式不满意,你可以通过多种方式来处理它:
如果更改很简单,您可以添加一个mode
默认为的新参数mode1
(因此它是向后兼容的)。如果用户向mode2
您提供您自己提出的正确if
条件来检测它。(另外,通常你可以想出一个比“mode”更好的名字。)
如果更改很大,您可以添加search2
使用新界面的新服务。然后将search
方法标记为已弃用(但仍然有效且向后兼容)。通常当你这样做时,你可以重构你的代码,几乎所有的逻辑都在search2
方法内部,并且你的旧search
方法在search2
内部使用修改后的参数调用(并适当地重新格式化结果)。如果您正确执行此操作,您将不再需要更改search
方法。当您更改表格等时 - 您只需要修改search2
.
我的观点是,避免发布N+1
API 的 -st 版本。如此大的版本意味着你所有的方法都发生了重大变化,而不仅仅是一个。许多主要的 API 从未发布其 API 的第 2 版,它们仍然使用第 1 版,只是稍微修改了其中的一部分,如上例所示。
如果您绝对确定要发布API 的 -st 版本,请为您的所有N+1
方法创建新的入口点。如果您有一个名为 的文件夹,请创建一个名为 的新文件夹。重构您的代码,以便它使用大部分. 如果您认为这太过分了,那么我认为您还不需要-st 版本的 API。services
services-v2
services
services-v2
N+1
顺便说一句,不要将集中式 API(如 Google Maps)与分布式 API(如 Android)混淆。Android 一直在发布新的 API 版本,因为有数十亿台 Android 服务器(每台 Android 设备就是一台),而且它们都不能简单地由 Google 远程升级。下一个版本的 Android 仍然向后兼容上一个版本,增加数字只是为了表示新功能。例如,您仍然可以在 Android 7.0 上运行为 Android 3.0 构建的应用程序(用户可能会收到一些额外的警告,但应用程序会运行)。Android 应用程序开发人员使用这些数字来描述他们的应用程序的“最低要求”。然而,集中式 API 通常会增加其版本号,以表明重大的向后不兼容更改。