2012-12-13 73 views
2

我已经阅读了关于PUT的同等效力的所有内容,而不是将其用于部分更新。我现在的问题是如何处理这种情况。REST:PUT以及如何处理部分实体

假设我的服务获取资源A的PUT请求.A有5个属性。如果请求只包含其中4个,我该怎么办?

  • 设置缺少的属性设置为null
  • 抛出一个异常,400错误请求
  • 其他?

创建新资源时,设置为空似乎可以,但在更新时似乎可能存在问题或危险。

对于这种情况,哪种被认为是“最佳做法”?

回答

1

据该书REST实践:

  • PUT预计整个资源表示
  • 补丁已经建议在使用的情况下,通常涉及大量资源 表示在提供唯一变化
1

如果缺少参数是强制参数,显然应该返回HTTP 400。如果该参数不是必需的,则可以使用传递的另一个参数创建资源。

我认为这也适用于更新的情况。如果缺少强制参数,则应返回HTTP 400。否则,请继续使用现有参数。

这就是我所做的,我认为这是一个合理的方法。