关于如何使用 REST 仅更新资源的一部分(例如状态指示器),我看到了很多人在挥手。
选项似乎是:
抱怨 HTTP 没有 PATCH 或 MODIFY 命令。但是,关于 REST 的 HTTP MODIFY 动词的公认答案是什么?很好地说明了为什么这不像看起来那么好。
使用带有参数的 POST 并标识一个方法(例如,一个名为“action”的参数)。一些建议是使用自定义方法名称指定 X-HTTP-Method-Override 标头。这似乎会导致根据您正在尝试做的事情在实现中进行切换的丑陋,并且对不是使用 POST 的特别 RESTful 方式的批评持开放态度。事实上,采用这种方法开始感觉像是一个 RPC 类型的接口。
使用 PUT 覆盖表示要更新的特定属性的资源的子资源。实际上,这实际上是对子资源的覆盖,这似乎符合 PUT 的精神。
在这一点上,我认为#3 是最合理的选择。
这是最佳实践还是反模式?还有其他选择吗?