如何在REST补丁中指示/请求删除对象属性

时间:2013-10-16 22:20:56

标签: rest

是否有标准化的方法为RESTful PATCH请求中的字段/参数指示空值?

假设我有一个对象,我想直接从对象中删除一个属性并将该更改保留到MT / DB。在客户端,我只是删除属性(在JS中),但是当PATCH到我的REST API层时,是否有一种标准化的方式来指示属性(不是对象,只是属性)应该被删除?

为了清楚/示例,这里是对象的假设PATCH路由:

PATCH /service/thing/{id}

和一些示例PATCH有效负载:

单一属性更新:

{ "myprop": "changed" }

多属性更新:

{ "myprop": "changed", "anotherprop": "changed" }

对于想要摆脱"myprop"的PATCH,你显然不能只提交这个有效载荷:

{ }

你会做点什么:

{ "myprop": undefined }

或者,你会创建一个全新的DELETE路线:

DELETE /service/thing/{id}/myprop

或者其他什么?

1 个答案:

答案 0 :(得分:1)

我会像你提议的那样实施PATCH。以某种方式接受部分表示更新。

这样我总是会发送JSON部分表示。

PATCH { "myprop": "newvalue" }

删除myprop空值。请求GET时发回空值取决于您。您始终可以忽略null值(与空值不同)。

PATCH { "myprop": null }

注意null而不是undefinednullJSON值。 但这只是我的2点。