PUT VS PATCH与例如

问题描述:

问题上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,想知道这个问题的答案也。

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更新部分的变化 –