我想知道人们对在响应体中不返回任何(null)的RESTful PUT操作有什么看法。


当前回答

与这里的大多数答案相反,我实际上认为PUT应该返回更新后的资源(当然除了HTTP代码之外)。

您希望将资源作为PUT操作的响应返回的原因是,当您向服务器发送资源表示时,服务器也可以对该资源应用一些处理,因此客户端希望知道请求成功完成后该资源的样子。(否则它将不得不发出另一个GET请求)。

其他回答

空的Request体符合GET请求的原始目的,空的响应体也符合PUT请求的原始目的。

与这里的大多数答案相反,我实际上认为PUT应该返回更新后的资源(当然除了HTTP代码之外)。

您希望将资源作为PUT操作的响应返回的原因是,当您向服务器发送资源表示时,服务器也可以对该资源应用一些处理,因此客户端希望知道请求成功完成后该资源的样子。(否则它将不得不发出另一个GET请求)。

“Created”的Http响应代码201以及指向客户端可以找到新创建资源的“Location”标头。

我认为服务器可以返回内容以响应PUT。如果您正在使用允许侧载数据的响应信封格式(例如ember-data所使用的格式),那么您还可以包括其他可能通过数据库触发器修改过的对象,等等(侧载数据显式地减少了请求的数量,这似乎是一个优化的好地方)。

如果我只是接受PUT,没有任何报告,我使用状态代码204,没有正文。如果我有什么要报告的,我会使用状态代码200,并包含一个主体。

我在我的服务中使用了RESTful API,以下是我的观点: 首先,我们必须了解一个通用视图:PUT用于更新资源,而不是创建或获取资源。

我用:无状态资源和有状态资源来定义资源:

无状态的资源 对于这些资源,只返回带有空主体的HttpCode就足够了。 有状态资源 例如:资源的版本。对于这类资源,当您想要更改它时,您必须提供版本,因此返回完整的资源或将版本返回给客户端,因此客户端在更新操作后不需要发送get请求。

但是,对于服务或系统来说,最重要的是保持简单、清晰、易于使用和维护。