REST:PUT以及如何处理部分实体

时间:2012-12-13 13:40:26

标签: rest partial put

我已经阅读了关于PUT的同一性能力的所有内容,而不是将其用于部分更新。我现在的问题是如何处理这种情况。

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

  • 将missing属性设置为null
  • 抛出错误,400错误请求
  • 其他?

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

这种情况被认为是“最佳做法”?

2 个答案:

答案 0 :(得分:1)

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

我认为这对更新案例也有效。如果缺少必需参数,则应返回HTTP 400。否则,继续使用现有参数。

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

答案 1 :(得分:1)

根据实践中的书籍REST:

  • PUT需要整个资源表示
  • 已建议将PATCH用于通常涉及大量资源的情况 只提供更改的表示