假设我们已在Book
处拥有/books/123
资源。此Book
有几个属性,例如:isbn
,year
,title
。
PUT方法用于更新整个资源。因此,如果我们只想更新title
,我们也需要传递其他所有内容。
PATCH可用于仅更新资源的某些属性。
如果我们使用部分数据进行PUT会发生什么?例如,PUT仅包含title
和isbn
?
如我所见,这应该替换现有资源,不应该发出任何错误信号。正确?
答案 0 :(得分:1)
如果你问,应该,那么我会同意你的看法。它应该替换现有资源,不会发出错误信号。当然,如果数据不完整,例如您只使用PUT
title
并且isbn
是必需的,那么您可能会收到400
错误,而PATCH
就可以了
然而,许多(大多数?从未调查过的)REST API都没有遵循它。关于我通常看到的唯一一件事就是GET /resource
是列表而GET /resource/:resource
是单一资源。许多此类API使用POST
进行更新,POST
用于创建等等。
所以,如果你问:
PUT
是否必须严格替换,答案是否定的。