使POST API方法正确处理并发请求

时间:2018-11-07 10:05:05

标签: asp.net-web-api

因此,让我们想象一下有一个名为“产品”的实体,您拥有包括创建产品的POST在内的REST API。产品具有自动生成的“ ID”字段和唯一的“名称”字段。该方法内部的作用是:

  1. 确认没有其他同名产品。因此,您可以从数据库中选择产品,然后将名称与输入参数进行比较
  2. 如果已经创建了相同的产品-您返回400
  3. 如果没有指定名称的产品-您创建实体并将其保存到数据库中

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

1 个答案:

答案 0 :(得分:0)

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

将其余的方法逻辑保持相同,我猜这是一个非常极端的情况,两个请求同时发生的机会非常小。您的验证有99.999%的时间会抓住这个机会。