PUT vs PATCH 示例

Lea*_*ner 1 api rest json

关于 REST API 设计最佳实践的问题

假设我只想更新客户的一个属性(lastN)

{id:1,firstN:fb,lastN:ln,dept:201,region:NA}  
Run Code Online (Sandbox Code Playgroud)

那么可以/应该
{id:1,lastN:newLn}使用 PATCH/PUT发送还是同时发送? {id:1,firstN:fb,lastN:newLn,dept:201,region:NA}使用 PUT/PATCH 或两者兼而有之?

我已经在这里问过类似(不一样)的问题,也想知道这个问题的答案。

Dmi*_* S. 5

PUT 应该用于更新整个资源。对于部分更新 PATCH 是正确的动词。

但是,PATCH 并不是 PUT 的直接替代品。如果您只想发送部分属性来添加/更新,则应使用内容类型“application/merge-patch+json”。正文将只包含修改后的属性。

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

Content-Type: application/merge-patch+json

{firstN:newFn,region:null,middleName:newMn}
Run Code Online (Sandbox Code Playgroud)

另一个更具描述性的替代方法是使用实​​际定义操作的 JSON Patch 文档。

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 },
]
Run Code Online (Sandbox Code Playgroud)