我的应用程序将从应用程序商店或 Play 商店更新,但应用程序使用的 Web 服务 API 不会更新。
因此,场景是客户端处于更新版本(例如 2.0)而 Web 服务 API 不是(例如 1.0)。
在这种情况下,我需要找到一种模式,使更新版本的客户端仍然可以访问和使用旧版本的 Web 服务 API。
任何人都可以提出相同的解决方案。
注意:我的应用分别在 iOS 和 Android 中构建。
附言:我无法强制更新 Web 服务 API。
示例:
我的旧版应用程序 (1.0) 具有输入必填字段的功能,该字段已在后端网络服务 (1.0) 中验证。
现在,我最新版本的应用程序 (2.0) 根本不需要显示该字段(这使它成为非强制性的),但我的应用程序 (2.0) 仍在访问网络服务版本 1.0,因此每当我发出请求时,服务器都会响应一条错误消息,指出该字段是必需的,并且不允许我保存数据。
通俗地说:
我有多个服务器代码部署,我的客户端会访问这些服务器。
服务器代码可以是任何版本(1.0、2.0、3.0),但我的客户端始终是最新发布的版本。 (例如 3.0)。
同一个客户端仍然需要访问运行在 1.0、2.0 和 3.0 的服务器
我该如何处理这种情况?
I need to find a pattern in which the client at the updated version
can still access and use APIs of older version.
如果您的意思是您的应用需要使用“两种”API,或者如果您的意思是您的应用应该能够使用“任一”API,那么您需要同时在线使用这两种 API。为此,您有 2 个主要选择:具有独特的 API 路径,或将它们托管在不同的(子)域(均在下面列出)
不同的 URL 路径
对此最简单的答案是让您的网络服务 API 在 URL 本身中有一个/v#/。这样您就可以轻松区分对不同版本 API 的调用。
例如 www.myserver.com/webapi/v1/songs/author/
和 www.myserver.com/webapi/v2/author/songs/
不同(子)域
另一种方法是让 v1 Web API 在一个(子)域上运行,而在另一个域上运行 v2...
www.v1.myserver.com/webapi/songs/author
与 www.v2.myserver.com/webapi/songs/author
或使用 myserverv1.com
与 myserver2.com
等