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 },
]
感谢,它看起来像补丁进行差异事情。希望PUT也是可以接受的,好的设计再次发送完整的JSON更新部分的变化 –