使用什么请求来更新资源而不发送数据

cla*_*ash 6 post patch get http request

我时不时地想到这个问题,谷歌了一段时间,没有得到明确的答案,就这样吧。

问题:

我想更新现有资源,但此更新的工作逻辑位于后端。

我们假设产品只能在设定的时间内可见。保持简单。时间“from”与产品数据一起存储在数据库中:product.visibleFromDate,持续时间(例如30天)只是一个变量或在某处配置(不在数据库中)。

现在我想调用后端告诉它将visibleFromDate更新为“now”: /api/product/:id/updatevisibility 在这种情况下,我不想发送正文,因为服务器应该确定“now”真正的值是。

实际上,我并不关心服务器是否回答更新的资源或没有内容。

HTTP请求

得到

  • 不应该使用,因为它应该是幂等的,但事实并非如此,因为visibleFromDate会被更新

邮政

  • 不想从前端发送日期

  • 不想从前端发送日期+应该是幂等的

修补

  • 合并补丁:不想从前端发送日期
  • JSON 补丁:同样,我不想发送值,我希望后端确定它。

当然,我可以只发送一个空对象、整个资源或一些废话,并在后端忽略它,但我仍然觉得我错过了这种“触发”类型的请求,它只需要资源的类型、id 和操作。

Beh*_*ooz 1

根据数据的可变性,它应该是 POST(不可变)或 PATCH(可变)。这并不取决于您发送或不发送的内容。
如果您确实想按照书本进行操作,那么您应该'{}'在没有要发送的字段时发送 。如果稍后添加任何内容,您只需添加它即可'{"duration":"30"}'