【问题标题】:Rest API resources: composed for post but separate to get is ok?Rest API 资源:为 post 组合但单独获取可以吗?
【发布时间】:2020-11-05 10:55:13
【问题描述】:

我正在创建一组 RESTful API,但我有一个问题:我有一个附加了一些图像的资源,我正在创建这样的资源: POST 到 /resource:创建对象并将图像保存到服务器。 GET到/resource返回对象但不返回图像,GET到/images返回图像。 我的问题是:这符合 REST 还是我应该使资源完全分离或完全统一? 我选择此解决方案是因为在发布时我肯定会发送图像,但在获取时我可能需要或不需要它们。

【问题讨论】:

    标签: api rest


    【解决方案1】:

    这是否符合 REST

    这很好 - 例如,如果您查看 Atom Publishing 的工作方式,您会发现当您 post a media to a collection 时,会创建两个资源(媒体资源和媒体链接条目)。

    但是,这里的罚款意味着您正在做出权衡。特别是,cache invalidation 更具挑战性,因为您对一个资源的 POST 可能会更改不同资源的表示。

    HTTP 缓存语义针对常见情况进行了优化,即给定请求仅更改目标资源;远处没有诡异的动作。

    这并不意味着这是正确的方式,而是您应该了解这是 HTTP 简化的方式,在其他情况下您需要注意细节。

    【讨论】:

      【解决方案2】:

      POST 基本上可以表示任何东西,并且与PUTGET 不同(有更多的直接关系),POST 允许产生各种副作用,包括创建 0 个或更多资源。

      POST 基本上是“随心所欲”的方法。

      【讨论】:

      • 谢谢!您能否为我提供一些参考资料以更深入地了解该主题?
      • 通常我最依赖的参考是标准。阅读 HTTP 规范并阅读 REST 论文。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多