【发布时间】:2016-02-22 12:28:29
【问题描述】:
据我了解,PUT 请求不应该返回任何内容。 考虑客户端想要运行这个伪代码:
x = resource.get({id: 1});
x.field1 = "some update";
resource.put(x);
x.field2 = "another update";
resource.put(x);
(假设我有一个输入控件和一个“保存”按钮,这允许我更改输入控件中显示的对象“x”的一部分,然后在按钮上单击 PUT 更改为服务器,然后继续编辑,也许“保存”对“x”的另一个更改)
根据关于如何在 REST API 中实现乐观锁定的不同建议,上述代码必须失败,因为 get() 返回的“x”的版本标记(无论如何实现)将在 put() 之后变得陈旧。 那么你们通常是如何让它发挥作用的呢? 还是在每次 PUT 后重新获取对象?
【问题讨论】:
-
我想我可以从 PUT 返回一个更新的 ETag 响应标头,但我认为它在概念上与在响应正文中返回某些内容没有什么不同。 PUT 不应该返回任何东西,是吗?