2016-11-16 74 views
0

問題上REST API設計的最佳實踐PUT VS PATCH與例如

假設我只想更新一個客戶的財產(lastN)

{id:1,firstN:fb,lastN:ln,dept:201,region:NA} 

那麼可以/應該送
{id:1,lastN:newLn}與PATCH/PUT還是兩者? {id:1,firstN:fb,lastN:newLn,dept:201,region:NA}與PUT/PATCH或兩者兼而有之?

我已經問類似的(不一樣)的問題here,想知道這個問題的答案也。

回答

0

PUT應該被用來更新整個資源。對於部分更新PATCH是正確的動詞。

然而,PATCH不在一條直線取代PUT。如果你只想發送部分物業添加/更新,內容類型「application /合併補丁+ JSON」應該被使用。正文只包含修改後的屬性。

https://tools.ietf.org/html/rfc7396

Content-Type: application/merge-patch+json 

{firstN:newFn,region:null,middleName:newMn} 

另一個更描述性的替代方法是使用實​​際定義操作JSON補丁文件。

https://tools.ietf.org/html/rfc6902#section-3

Content-Type: application/json-patch+json 

[ 
    { "op": "add", "path": "/middleName", "value": newMn }, 
    { "op": "remove", "path": "/region" }, 
    { "op": "replace", "path": "/firstN", "value": newFn }, 
] 
+0

感謝,它看起來像補丁進行差異事情。希望PUT也是可以接受的,好的設計再次發送完整的JSON更新部分的變化 –