使POST API方法正确处理同时发生的请求



因此,让我们假设有一个名为"Products"的实体,并且您有包括POST在内的REST API来创建产品。产品有一个自动生成的"ID"字段和唯一的"名称"字段。你在方法内部做的是:

  1. 验证是否没有其他具有相同名称的产品。因此,您从DB中选择产品,并将Name与输入参数进行比较
  2. 如果已经创建了相同的产品,则返回400
  3. 如果没有具有指定名称的产品,则创建实体并将其保存到DB

问题是,如果同时有两个POST请求,您将得到一个错误。我们应该在这里使用一些锁定机制吗?如何正确操作?

实际上不需要使用任何类型的锁定,在名称字段上使用唯一的约束,这将使您无法存储两个具有相同名称的产品。然后捕获抛出的异常并将其返回为400。

保持方法逻辑的其余部分不变,我猜这是一个非常边缘的情况,两个请求同时发生的可能性非常小。99.999%的时间,您的验证会发现这一点。

最新更新