2015-12-23 44 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

相關問題