android - 在客户端保持面向服务架构的向后兼容性

标签 android ios web-services compatibility soa

<分区>

我的应用程序将从应用程序商店或 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/authorwww.v2.myserver.com/webapi/songs/author 或使用 myserverv1.commyserver2.com

关于android - 在客户端保持面向服务架构的向后兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34430507/

相关文章:

ios - 仅在 UIWebView 中显示站点的一部分

ios - 如何让框架之外实现一些特定的方法

android - 关于android 1.5和2.1的帮助(初学者,书籍版本的问题)

android - 如何在 Android 中使用 sqlite 获取更新的行数?

Android:向 Intent 添加数据无法加载 Activity

ios - App Store 是否接受自定义浏览器?

php - Android 将 Lat Long 发送到 php 并存储在 mysql 中

php - SOAP 错误 : Encoding: Object has no property

java - JAXWS仅服务100个并发请求,如何配置JAXWS将其更改为无限制?

json - 415 不支持的媒体类型 - 在 lightswitch 2012 中将 json POST 到 OData 服务