在POST响应中返回表示的子集是否违反REST?

时间:2010-01-14 16:57:20

标签: rest

如果我正在发布一个包含100个字段的新资源,并且服务器添加了自己的3个字段,如创建日期,状态等,那么RESTful只返回仅包含该资源的资源的迷你表示201 CREATED响应中的3个新领域?

然后客户端可以将这3个新字段添加到其本地表示中。我已经看到一个人应该总是发送完整的表示的劝告,但是返回所有103的带宽似乎浪费了。

3 个答案:

答案 0 :(得分:4)

201响应实体(响应本身)不必是任何http客户端,或者被您认为是刚创建的资源。

这是一种描述结果的表示。

如果您希望人们访问刚刚创建的资源,他们可以通过向位置标头中的URI发出请求来回复201.

如果您在201中返回实体正文,则HTTP不会将其视为您刚刚创建的资源,因此您可以返回任何所需内容。

重要的是您返回的实体的媒体类型。如果客户知道该实体,无论它是实体的较小版本还是完整版本,它们都会知道如何处理它。如果您希望clietn“知道”返回的媒体类型为201是最小化版本,那么您将强制执行与您自己的协议的强耦合,这违反了ReST原则。

答案 1 :(得分:1)

没有规则声称您需要在REST论文或HTTP RFC中返回完整响应。后者(RFC 2616, HTTPbis version)有关于201 Created状态代码的说法:

  

如果在源服务器上创建了资源,则响应应该是201(已创建)并包含描述请求状态的实体,并引用新资源和Location头。

返回已添加的信息是一个合理且完全符合REST的HTTP标准。

答案 2 :(得分:1)

尽管提供有关资源的更多信息的链接可能是一个想法,但完全由您决定。如果你想真正想要你可以指定一个microformat