2012-03-21 15 views
0

RDBMSにドラフト状態で保存された請求書があるとします。請求書には3つの明細があります。休息クライアントは請求書を受け取り、明細を修正します。PUTリクエストからネストされたデータを更新する方法

GET /インボイス/ 123

{ 
    "InvoiceId" : "123", 
    "lineitems": 
    [ 
     { "id":"A", "qty":"5"}, 
     { "id":"B", "qty":"5"}, 
    ] 
} 

は、以下のように、ユーザが請求書を修正すると仮定する。項目の 変更量 は、Item B. を削除しますが、結果がある

C.

新しい項目を追加します:

{ 
    "InvoiceId" : "123", 
    "lineitems": 
    [ 
     { "id":"A", "qty":"10"}, 
     { "id":"D", "qty":"5"},  
    ] 
} 

正味の変化は、行が削除されたということです、ラインが更新されている、と行が追加されました。

ユーザーは、ドラフト請求書を保存します。その結果、PUT要求が発生します。

PUT /請求書/ 123

サーバー上の行項目を更新するための最善の戦略は何ですか?

(...で最後に変更され、日付を作成し、によって作成された)すべてのラインアイテムをdeleteing、最初からそれらを作成すると、それらのライン上の任意のメタデータを失うことに注意して

おかげで、

答えて

0
をキープ

PUTメソッドは、囲まれたエンティティが指定されたRequest-URIの下に格納されることを要求します。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

置き換えるなどPUTのだと思います。 PUT要求内のリソースの状態は、それが受け入れられた場合のリソースの結果の状態でなければなりません。

特定の要素を追加/削除/更新する場合は、PATCHを使用してください。

+0

サブリソースを使用したモデリングは、変更されたビットを直接更新できるようにする別の方法です。 –

関連する問題