2015-12-23 41 views
2

我处于应用程序将从应用商店或Play商店更新但应用程序使用的Web服务API不会更新的情况。在客户端维护面向服务的体系结构的向后兼容

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

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

任何人都可以请提出相同的解决方案。

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

P.S .:我不能强制更新Web服务API。

例子:

我的旧版本的应用程序(1.0)有一个功能来输入其在后端网络服务(1.0)验证必填字段。 (2.0)不需要显示字段(,这使得它非强制性),但我的应用程序(2.0)仍在访问Web服务版本1.0,因此无论何时提出请求,服务器都会响应一条错误消息,指出该字段是必需的,并且不允许我保存数据。

为了把它在平原的话:

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

我该如何处理这样的场景?

+0

您的意思是说,您的应用的“最低SDK”低于用户设备的运行状态?如果是这样,那么哪些方法调用会导致你的问题,(至少在Android中),你应该清楚哪些方法应该可用,哪些可能不是。它们将被标记为“已弃用”如果您避免使用已弃用的方法(在6.0 API版本中),那么您的Android 1.0代码应该可以在6.0设备上正常工作。 – mawalker

+0

不,不会,与API版本无关,API是指Web服务API。 – miteshpithadiya

回答

0

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

如果你的意思是你的应用程序需要使用“都”的API,或者如果你的意思是你的应用程序应该能够使用“是” API,那么你就需要在同一时间有两个API可在网上。要做到这一点,你有两个主要选择具有独特的API的路径,或主机它们放在不同的(子)域(下面都列出)


不同的URL路径

最简单的答案,这是在网址本身中包含您的Web服务API a/v#/。通过这种方式,您可以轻松区分对不同版本的API的调用。

所以www.myserver.com/webapi/v1/songs/author/www.myserver.com/webapi/v2/author/songs/例如


不同(子)结构域

另一种方法是为具有V1网络的API上的一个(子)域中运行,并且对另一个V2 .. www.v1.myserver.com/webapi/songs/author vs www.v2.myserver.com/webapi/songs/author或使用myserverv1.com vs myserver2.com

+0

嗨,谢谢你的回答,但这不是我面临的问题,请检查我在问题中添加的例子吗? – miteshpithadiya

0

如果你如果Web API'要求'提供该字段,那么您的应用程序需要'提供'该字段。它是否从用户那里获得。如果用户没有填写/提供该字段,那么你只需要输入你的API调用“有效的东西”(这将取决于该领域是什么,你的API等),然后从那里去。

+0

嗨,这将增加很多如果其他块在前端代码,我正在寻找避免在这种情况下。 – miteshpithadiya

+0

我不明白为什么会这样。在处理的早期只需要一个if语句,用一个'default'值替换一个空字符串。然后让其他前端代码按照以前的方式工作。 – mawalker

相关问题