REST:如何处理已在请求正文中具有ID的POST请求

时间:2017-04-01 07:33:37

标签: rest api-design

我们的产品有休息端点POST,PUT,DELETE。

POST请求正文如下:

{
      "Id": Unique identifier of the product,
      "Description": Product description,
      "Price": Price of the product
}

现在,由于POST被认为是非幂等的,但是在这里我们不能允许具有相同" Id"的重复条目。这个" Id"在请求正文中是POST请求我们系统的第三方系统ID。

我们允许使用此" Id"更新/删除资源。只有,不要期望POST / PUT与我们内部生成的ID。虽然我们生成了我们唯一的Id,我们将这个Id作为对此POST请求的响应发回,就像确认请求已被处理一样。

但是我想知道,它应该是POST还是PUT请求?如果我们收到重复的POST请求,我们应该怎么做,我们应该发回验证错误或更新以前保存的请求?

REST说什么或哪种方法对性能和维护更好?

1 个答案:

答案 0 :(得分:0)

为什么不同时提供?

POST方法会抛出HttpStatusCode 409(冲突),以防身体中的ID已存在于您的系统中,而另一个(PUT)则会更新资源与正文中的新值。您甚至可以添加PATCH,仅用于更新正文中传递的字段。