2012-07-09 27 views
2

我想要做的事更多REST这样的:什么是最符合某些要求的最新REST方式更新资源?

选择资源,其field1等于foo,并更新field1bar

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

两个解决方案,我可以看到:

  1. GET项目匹配我的要求,然后PUT来更新它们。也许用EtagIf-Match来保证它是原子的。
  2. 写定制PUT方法处理程序,因此在查询字符串代表WHERE子句中的SQL和PUT请求的内容表示在SQL
  3. SET子句

个人我更喜欢后者的解决方案,但在RESTPUT方法应该是一次覆盖 * a *资源,而不是许多资源,也不只是更新资源的某些字段。

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

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

回答

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" 
相关问题