【发布时间】:2020-11-05 10:55:13
【问题描述】:
我正在创建一组 RESTful API,但我有一个问题:我有一个附加了一些图像的资源,我正在创建这样的资源: POST 到 /resource:创建对象并将图像保存到服务器。 GET到/resource返回对象但不返回图像,GET到/images返回图像。 我的问题是:这符合 REST 还是我应该使资源完全分离或完全统一? 我选择此解决方案是因为在发布时我肯定会发送图像,但在获取时我可能需要或不需要它们。
【问题讨论】:
我正在创建一组 RESTful API,但我有一个问题:我有一个附加了一些图像的资源,我正在创建这样的资源: POST 到 /resource:创建对象并将图像保存到服务器。 GET到/resource返回对象但不返回图像,GET到/images返回图像。 我的问题是:这符合 REST 还是我应该使资源完全分离或完全统一? 我选择此解决方案是因为在发布时我肯定会发送图像,但在获取时我可能需要或不需要它们。
【问题讨论】:
这是否符合 REST
这很好 - 例如,如果您查看 Atom Publishing 的工作方式,您会发现当您 post a media to a collection 时,会创建两个资源(媒体资源和媒体链接条目)。
但是,这里的罚款意味着您正在做出权衡。特别是,cache invalidation 更具挑战性,因为您对一个资源的 POST 可能会更改不同资源的表示。
HTTP 缓存语义针对常见情况进行了优化,即给定请求仅更改目标资源;远处没有诡异的动作。
这并不意味着这是正确的方式,而是您应该了解这是 HTTP 简化的方式,在其他情况下您需要注意细节。
【讨论】:
POST 基本上可以表示任何东西,并且与PUT 和GET 不同(有更多的直接关系),POST 允许产生各种副作用,包括创建 0 个或更多资源。
POST 基本上是“随心所欲”的方法。
【讨论】: