是否有标准化的方法来指示 RESTful PATCH 请求中字段/参数的空值?
假设我有一个对象,我只想从对象中删除一个属性并将该更改保留到 MT/DB。在客户端,我只会删除属性(在 JS 中),但是当 PATCH 到我的 REST API 层时,是否有一种标准化的方法来指示应该删除属性(不是对象,只是属性)?
为了清楚起见/示例,这里是对象的假设 PATCH 路由:
PATCH /service/thing/{id}
Run Code Online (Sandbox Code Playgroud)
和一些示例 PATCH 有效载荷:
单一属性更新:
{ "myprop": "changed" }
Run Code Online (Sandbox Code Playgroud)
多属性更新:
{ "myprop": "changed", "anotherprop": "changed" }
Run Code Online (Sandbox Code Playgroud)
对于您想要摆脱的 PATCH,"myprop"显然不能只提交此有效负载:
{ }
Run Code Online (Sandbox Code Playgroud)
你会做这样的事情:
{ "myprop": undefined }
Run Code Online (Sandbox Code Playgroud)
或者,你会创建一个全新的 DELETE 路由:
DELETE /service/thing/{id}/myprop
Run Code Online (Sandbox Code Playgroud)
或者是其他东西?
我会PATCH按照你的建议实施。以接受部分表示进行更新的方式。
这样我就会始终发送JSON部分表示。
PATCH { "myprop": "newvalue" }
Run Code Online (Sandbox Code Playgroud)
并用于删除myprop空值。请求 a 时是否发回空值GET取决于您。您始终可以忽略null值(这与空不同)。
PATCH { "myprop": null }
Run Code Online (Sandbox Code Playgroud)
注意null而不是undefined. null是一个JSON值。但这只是我的2分钱。