PUT用部分数据更新资源?

时间:2014-12-09 17:23:54

标签: rest

假设我们已在Book处拥有/books/123资源。此Book有几个属性,例如:isbnyeartitle

PUT方法用于更新整个资源。因此,如果我们只想更新title,我们也需要传递其他所有内容。

PATCH可用于仅更新资源的某些属性。

如果我们使用部分数据进行PUT会发生什么?例如,PUT仅包含titleisbn

如我所见,这应该替换现有资源,不应该发出任何错误信号。正确?

1 个答案:

答案 0 :(得分:1)

如果你问,应该,那么我会同意你的看法。它应该替换现有资源,不会发出错误信号。当然,如果数据不完整,例如您只使用PUT title并且isbn是必需的,那么您可能会收到400错误,而PATCH就可以了

然而,许多(大多数?从未调查过的)REST API都没有遵循它。关于我通常看到的唯一一件事就是GET /resource是列表而GET /resource/:resource是单一资源。许多此类API使用POST进行更新,POST用于创建等等。

所以,如果你问:

  • 目前使用的API是PUT是否必须严格替换,答案是否定的。
  • 如果您正在设计新的API,我建议坚持您的概述。