【问题标题】:how to deal with synchronizing 2 consecutive REST calls on the same object如何处理在同一对象上同步 2 个连续 REST 调用
【发布时间】:2014-09-10 06:44:20
【问题描述】:

我遇到了一些 UI 问题,导致它同时一个接一个地发送 2 个 put 请求。

问题在于执行 PUT 操作的 REST API 将数据库中的对象与 UI 发送的对象进行比较,并相应地更新(假设我已将商品添加到购物车)

因为这两个调用是同时进行的,所以第二个调用在第一个调用能够修改它之前从数据库中抓取对象,导致添加的项目被添加两次而不是一次。

为了争论,我们把UI问题放在一边,这是无状态环境中的一般同步问题,我想知道一些处理这个问题的约定

谢谢。

【问题讨论】:

    标签: rest concurrency stateless


    【解决方案1】:

    我在我的项目中所做的是在应用程序中的每个实体上创建一个修改后的(一个长的时间戳)字段。为了 PUT(或任何其他修改命令)成功,客户端需要发送最后一个(数据库中的)修改值。如果业务逻辑发现数据库中的修改与客户端发送的相同 - 否则服务器执行操作,并以适当的(自定义)错误拒绝它。

    为此需要两件事:

    1. 业务逻辑代码需要同步(如果您需要高性能的更新,这不是一件好事)。
    2. 客户端需要在 PUT 之前执行 GET 以便使用最后修改的值进行更新(它可能确实导致它(可能)在修改操作之前向用户显示实体)。

    希望这会有所帮助 + 可能有一种我不知道的更标准的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多