2014-10-31 57 views
1

我有一個數據庫中的服務器上存儲的餘額。我想有兩個API的Add Subtract API同步

  1. addToBalance(amountToAdd)
  2. subtractFromBalance(amountToSubtract)

我的問題是如下如果用戶是在移動和調用其中之一,然後斷開連接我們無法判斷餘額是否已更新。所以我們不知道是否要重試。

我提出的解決方案是在客戶端知道它以驗證是否已經有更新時給出當前餘額,如果提供的餘額與實際當前餘額不匹配,則更新應該失敗。這個解決方案的問題是,如果餘額從其他地方更新,則通話將失敗。我們不知道是否要區分這兩個失敗,所以仍然不知道是否要重試。

有沒有人有一個可能的解決方案,以確保相同的調用不會被多次作出,以避免多次增加和減少?

謝謝, Andy。

回答

0

這是一個常見問題,HTTP本身爲您提供瞭解決方案,這是爲了使請求有條件。

當用戶使用GET檢索到該資源時,應該返回Last-Modified標頭,並在上次更改資源時使用時間戳。然後,您需要用戶在更改時使用該值發送If-Unmodified-Since標題。

如果其他人在兩者之間進行了更改,則資源時間戳將大於If-Unmodified-Since中發送的值,並且您應該以412 Precondition Failed使請求失敗。如果用戶未能包含If-Unmodified-Since標題,則應該失敗,並顯示428 Precondition Required

+0

這看起來不錯,謝謝。 – user2509835 2014-10-31 14:11:56

+0

[http://stackoverflow.com/questions/15159274/avoid-duplicate-posts-with-rest](http://stackoverflow.com/questions/15159274/avoid-duplicate-posts-withrest)這實際上是也非常有用。 – user2509835 2014-10-31 15:19:04