更新符合某些要求的资源的最REST方法是什么?

时间:2012-07-09 15:44:59

标签: http rest

我想做更多REST这样的事情:

选择field1等于foo的资源,并将field1更新为bar

UPDATE XXX SET field1 = "bar" WHERE field1="foo"

我可以看到两种解决方案:

    符合我要求的
  1. GET项,然后PUT更新它们。也许使用EtagIf-Match来保证它是原子的。
  2. 编写自定义的PUT方法处理程序,因此查询字符串表示SQL中的WHERE子句,PUT请求的内容表示SQL中的SET子句
  3. 我个人更喜欢后一种解决方案,但在REST中,PUT方法应该覆盖 * a *资源,而不是许多一次只有资源,也不只是更新资源的某些字段。

    我还检查了HTTP PATCH方法提案。它使“更新资源的某些字段”成为可能,但它也不会用于同时更新许多资源。

    那么你的解决方案是什么?我希望看到你的最佳实践: - )

1 个答案:

答案 0 :(得分:1)

随机未经考验的想法:

 url: PUT /xxx/*/field1/foo
 body: "bar"

或(如果您可以预测/限制XXX的键范围):

PUT /xxx/0,9999999/field1/foo
"bar"

或者如果你对2个电话没问题,可能是:

GET /xxx?field1="foo"
POST /xxx/id1,id2,...,idn/field1
"bar"