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

标签 rest

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

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

为了清楚起见/示例,这里是该对象的假设 PATCH 路径:

PATCH /service/thing/{id}

以及一些示例 PATCH 负载:

单个属性更新:

{ "myprop": "changed" }

多属性更新:

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

对于想要删除 "myprop" 的 PATCH,您显然不能只提交此有效负载:

{ }

你会做这样的事情吗:

{ "myprop": undefined }

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

DELETE /service/thing/{id}/myprop

或者,其他什么?

最佳答案

我会像你建议的那样实现PATCH。以接受部分表示进行更新的方式。

这样我将始终发送 JSON 部分表示。

PATCH { "myprop": "newvalue" }

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

PATCH { "myprop": null }

注意null而不是undefinednull 是一个 JSON 值。 但这只是我的 2 美分。

关于rest - 如何指示/请求删除 REST 补丁中的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414979/

相关文章:

rest - PATCH 请求的 HTTP 状态代码含义 "you are not allowed to make such request"

java - 使用 Spring Data Rest 时公开所有 ID

rest - Azure服务总线: limitations to send a batch via the REST API?

javascript - URL 中的参数总是字符串吗?

java - 创建 Bot 来玩通过 RESTful 接口(interface)定义的游戏

java - Spring Neo4J REST 错误 - nodeStateTransmitter

java - 泽西路径参数 : Multiple backslash separated param

REST:为同一资源提供详细和概述响应

c# - WCF REST 不异步处理

python - Restplus API应用程序对象不可调用?