2

私はこのようなことをもっとしたいREST

field1がに等しいリソースを選択しfoo、次のように更新field1します。bar

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

私が見ることができる2つの解決策:

  1. GET私の要件に一致するアイテム、次にPUTそれらを更新します。多分それがアトミックであることを保証するために、Etagまたはそれを保証するために。If-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 に答える