是否应该在REST API PUT请求中传递资源及其相关资源的所有字段?

时间:2015-05-08 07:25:04

标签: rest put

假设我有票和票评论资源。门票可以有很多评论。在更新端点HTTP PUT /api/tickets/<ticket_id>/中,我是否应该要求客户端在更新故障单时传递故障单的所有字段及其所有注释?

我问过一些开发人员,他们中的一些人说我应该只传递将要修改的字段,因为它更轻,性能更快,更容易使用。有些人说我应该通过票证的所有字段+所有评论,因为PUT请求应该是幂等的。但我担心的是,当评论太多时,有效载荷会非常大。

1 个答案:

答案 0 :(得分:3)

是的,因为PUT请求应该替换整个实体到更新。如果要对实体进行部分更新,请使用PATCH请求。

另见the rfc以供参考

  

HTTP的PATCH方法

     

扩展超文本传输​​协议(HTTP)的几个应用程序   需要一个功能来进行部分资源修改。

     

现有的HTTP PUT方法只允许完全替换文档。该提议添加了一个新的HTTP方法PATCH来修改现有的HTTP资源。

因此,在您的情况下,使用PATCH请求进行部分更新可能会更有效率。