Http 什么';更新符合某些需求的资源的最简单的方法是什么?

Http 什么';更新符合某些需求的资源的最简单的方法是什么?,http,rest,Http,Rest,我想做更多的REST,比如: 选择其field1等于foo的资源,并将field1更新为bar UPDATE XXX SET field1 = "bar" WHERE field1="foo" 我可以看到两种解决方案: 获取符合我的需求的项目,然后放置以更新它们。可以使用Etag或If Match来保证它是原子的 编写一个定制的PUT方法处理程序,使查询字符串表示SQL中的WHERE子句,而PUT请求的内容表示SQL中的SET子句 我个人更喜欢后一种解决方案,但在REST中,PUT方法应该覆盖

我想做更多的
REST
,比如:

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

UPDATE XXX SET field1 = "bar" WHERE field1="foo"
我可以看到两种解决方案:

  • 获取符合我的需求的项目,然后
    放置
    以更新它们。可以使用
    Etag
    If Match
    来保证它是原子的
  • 编写一个定制的
    PUT
    方法处理程序,使查询字符串表示SQL中的WHERE子句,而
    PUT
    请求的内容表示SQL中的
    SET
    子句
  • 我个人更喜欢后一种解决方案,但在
    REST
    中,
    PUT
    方法应该覆盖*a*资源,一次覆盖的资源不多,也不只是更新资源的某些字段

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

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

    随机未经测试的想法:

     url: PUT /xxx/*/field1/foo
     body: "bar"
    
    或者(如果您可以预测/绑定XXX的键范围):

    或者如果你可以打两个电话,也许:

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