我在数据库中的服务器上存储了余额。我想有两个api的
我的问题如下如果用户在移动设备上并且调用其中一个然后失去连接,我们无法告知余额是否已更新。所以我们不知道是否重试。
我提出的解决方案是提供当前余额,因为客户知道它是否已经有更新,如果提供的余额与实际当前余额不匹配,更新应该失败。此解决方案的问题是,如果从其他地方更新余额,则呼叫将失败。我们不知道是否要区分这两个失败,所以仍然不知道是否重试。
有没有人有可能的解决方案来确保不会多次进行相同的调用以避免多次添加和减少?
谢谢, 安迪。
答案 0 :(得分:0)
这是一个常见的问题,HTTP本身就为您提供了解决方案,即使请求成为条件。
当用户使用GET
检索该资源时,您应返回Last-Modified
标头,其中包含上次更改资源的时间戳。然后,您需要用户在更改时使用该值发送If-Unmodified-Since
标头。
如果其他人在中间更改了它,则资源时间戳将大于If-Unmodified-Since
中发送的值,您应该使412 Precondition Failed
失败。如果用户未能包含If-Unmodified-Since
标头,则您应该使用428 Precondition Required