在客户端维护面向服务的体系结构的向后兼容性

时间:2015-12-23 07:16:01

标签: android ios web-services compatibility soa

我的应用程序将从应用程序商店或Play商店更新,但应用程序正在使用的Web服务API不会更新。

因此,情况是客户端处于更新版本(例如2.0)而Web服务API不是(例如1.0)。

在这种情况下,我需要找到一种模式,其中更新版本的客户端仍然可以访问和使用旧版本的Web Service API。

任何人都可以为此提出解决方案。

注意:我的应用程序分别在iOS和Android中构建。

P.S。:我无法强制更新Web服务API。

示例:

我的应用程序的旧版本(1.0)具有输入必需字段的功能,该字段已在后端Web服务(1.0)中验证。

现在,我最新版本的应用程序(2.0)根本不需要显示该字段(使其成为非必需),但我的应用程序(2.0)仍在访问网页服务版本1.0,因此每当我发出请求时,服务器都会回复一条错误消息,指出该字段是必需的,并且不允许我保存数据。

用简单的话说:

我有多次部署服务器代码,我的客户端会访问这些服务器。 服务器代码可以是任何版本(1.0,2.0,3.0),但我的客户端始终是最新发布的版本。 (例如3.0)。 同一客户端仍需要访问运行在1.0,2.0和3.0

的服务器

我该如何处理这种情况?

2 个答案:

答案 0 :(得分:0)

  

我需要找到一个模式,其中客户端处于更新版本   仍然可以访问和使用旧版本的API。

如果您的意思是您的应用需要使用' API,或者如果您的意思是您的应用应该能够使用' API然后您需要同时在线提供这两个API。要做到这一点,您有2个主要选择具有唯一的API路径,或者将它们托管在不同的(子)域(下面列出)

不同的网址路径

最简单的答案是在URL本身内部使用您的Web服务API a / 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 vs www.v2.myserver.com/webapi/songs/author或使用myserverv1.com vs myserver2.com等。

答案 1 :(得分:0)

如果您的Web API需要'提供该字段,然后您的应用需要提供'那个领域。是否从用户那里获得它。如果用户没有填写/提供该字段,那么您只需要输入您的API调用"有效的内容" (这取决于字段是什么,您的API等)然后从那里开始。