哪个HTTP动词应该用于组合删除&插入(模仿和“更新”)?

时间:2017-07-17 18:29:41

标签: rest http asp.net-web-api

我有我的客户可以提交的销售订单,然后在以后进行编辑。将编辑内容插入数据库时​​,我选择从销售订单中完全删除所有订单项,然后再将它们全部插入,就好像它是新订单一样。

说明:

初始订单..

ORDERID: 1
Lines:
10. item 1 - 45qty
20. item 2 - 50qty
30. item 7 - 33qty
40. item 9 - 65qty

然后客户编辑订单:(更改第1项的数量,删除第9项并添加第4项)

ORDERID: 1
Lines:
10. item 1 - 60qty
20. item 2 - 50qty
30. item 4 - 10qty
40. item 7 - 33qty

我的api将首先调用SQL命令DELETE FROM [table] WHERE ORDERID = @OrderID

然后它将遍历所有编辑中的行并将它们插入到订单中。就像在创建新订单时进行初始插入一样。

所以我的问题是......我应该使用HTTP动词UPDATE来做到这一点吗?还是PUT?或者什么是合适的?

1 个答案:

答案 0 :(得分:1)

我认为HTTP PUT完全符合您的情况。如果要更新现有对象,请使用PATCH

来自REST API design doc

  

HTTP RFC指定PUT必须将全新的资源表示作为请求实体。这意味着,如果仅提供某些属性,则应删除这些属性(即设置为null)。

     

最近提出了另一种称为PATCH的方法。此调用的语义类似于PUT,它更新资源,但与PUT不同,它应用delta而不是替换整个资源。在撰写本文时,PATCH仍然是提议的标准,等待最终批准。