2

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

选择field1等于的资源foo,然后更新field1bar

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

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

  1. GET符合我要求的项目,然后PUT更新它们。也许有EtagIf-Match保证它是原子的。
  2. 编写一个自定义的PUT方法处理程序,这样查询字符串代表SQL中的WHERE子句,PUT请求的内容代表SETSQL中的子句

我个人更喜欢后一种解决方案,但是在 中REST,该PUT方法应该覆盖 一个资源,一次不是很多资源,也不是仅仅更新资源的某些字段。

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

那么你的解决方案是什么?我想看看你的最佳做法:-)

4

1 回答 1

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"
于 2012-07-09T16:15:45.957 回答