我遇到一些UI问题,导致它同时一个接一个地发送2个put请求。
问题在于,执行PUT操作的REST API会将数据库中的对象与UI发送的对象进行比较,并相应地进行更新(假设我已将项目添加到购物车中)
因为这两个调用是同时进行的,所以第二个调用在第一个调用能够修改它之前从数据库中获取对象,导致添加的项目被添加两次而不是一次。
让我们把UI问题放在一边,为了论证,这是无状态环境中的一般同步问题,我想知道一些处理这个问题的约定
感谢。
答案 0 :(得分:0)
我在项目中所做的是在应用程序中的每个实体上创建一个修改的(一个长的,即时间戳)字段。为了使PUT(或任何其他修改命令)成功,客户端需要发送最后一个(数据库中的一个)修改值。如果业务逻辑发现数据库中修改的内容与发送的客户端相同 - 服务器执行操作,否则使用正确的(自定义)错误拒绝它。
这需要2件事情:
希望这会有所帮助+可能有一种更为标准的方法,我不知道这一点。