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

标签 rest

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

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

最佳答案

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

它是描述结果的表示。

如果您希望人们访问刚刚创建的资源,他们可以通过向返回 201 的 Location header 中的 URI 发出请求来实现。

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

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

关于rest - 在 POST 响应中返回表示的子集是否违反了 REST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2065891/

相关文章:

python - Django 在 cookie 中没有 sessionid

linux - 在 netbeans 中下载 glassfish 时出错

rest - 使用 http.NewRequestWithContext() 创建的请求在传递给中间件时会丢失上下文

python - Django Rest Framework OPTIONS 操作仅显示 POST

javascript - 将 Highcharts 与 REST API 集成

rest - ALM REST 有什么方法可以访问测试参数吗?

java - 用于移动客户端的 RESTful Java Web 服务中的身份验证

ruby-on-rails - 使用 RESTful Controller 删除 Rails 中的多个对象?

wcf - 何时使用 WCF/REST

rest - 是否可以让 Lync 与 REST API 进行通信?