2012-03-21 60 views
0

假設我們有一個在RDBMS中以草稿狀態保存的發票。發票有三個訂單項。休息客戶獲取發票並修改訂單項。如何更新來自PUT請求的嵌套數據

GET /發票/ 123

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

假設用戶修改發票如下;項目的 變化量一 移除項B. 添加新項C.

結果是:

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

的淨變化是,行已被刪除,行已經更新,並一條線已被添加。

用戶然後保存草稿發票,這會導致PUT請求。

PUT /發票/ 123

什麼是更新服務器上的行項目的最佳策略是什麼?

請記住,所有的delete一個行項目,並從頭開始創建他們將失去對這些線路的任何元數據(創建者,創建日期,最後由...修改)

感謝,

回答

0

PUT方法要求封閉實體存儲在提供的Request-URI下。

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

PUT如更換思考。 PUT請求中的資源狀態應該是資源的最終狀態(如果它被接受)。

如果你想添加/刪除/更新特定的元素,你應該看看使用PATCH

+0

使用子資源建模是另一種方式,它允許已更改的位直接更新。 – 2012-03-21 22:20:14