gpt4 book ai didi

RESTful 设计 - 如何为实体的附件建模

转载 作者:行者123 更新时间:2023-12-04 15:16:31 29 4
gpt4 key购买 nike

我正在尝试在 REST 中对实体的附件进行建模。假设一个缺陷实体可以附加多个附件。每个附件都有描述和一些其他属性(上次修改时间、文件大小...)。附件本身是任何格式的文件(jpeg、doc ...)

我想知道我应该如何以 REST 方式对其进行建模

我考虑了以下两种选择:

第一种方法(使用相同的资源,不同的表示):

  • GET , content-type:XML on http://my-app/defects/ {id}/附件 将返回缺陷的
    XML 格式的附件元数据(描述、上次修改、文件大小...)
  • GET , content-type:gzip on http://my-app/defects/ {id}/附件 将在 zip 文件中返回缺陷的附件
  • GET , content-type:mime multi-part on http://my-app/defects/ {id}/附件 将在多部分消息(二进制数据和 XML 元数据)中返回缺陷的附件
  • POST,内容类型:XML 上 http://my-app/defects/ {id}/附件 将创建新附件,只有元数据没有附加文件(然后用户必须发送带有二进制数据的 PUT 请求)
  • POST ,内容类型:mime\multi-part on http://my-app/defects/ {id}/附件 将创建附件,客户端可以在一次往返中同时发送元数据和文件本身

  • 第二种方法(将附件的数据与元数据分开):
  • GET , content-type:XML on http://my-app/defects/ {id}/附件 将返回缺陷的
    XML 格式的附件元数据(描述、上次修改、文件大小...)
  • GET , content-type:gzip on http://my-app/defects/ {id}/附件/文件将在单个 zip 中返回缺陷的附件二进制数据

  • 创建一个新的附件,首先调用:
  • POST,内容类型:XML 上 http://my-app/defects/ {id}/附件 将创建新附件,只有元数据没有附加文件(然后用户必须发送带有二进制数据的 PUT 请求)

  • 然后添加二进制数据本身:
  • POST ,内容类型:mime\multi-part on http://my-app/defects/ {id}/attachments/{id}/file 将创建附件文件


  • 一方面,第一种方法更加健壮和高效,因为客户端可以在单次往返中创建\获取附件元数据和二进制数据。另一方面,我有点不愿意使用 mime-multipart 表示,因为消费和生产更麻烦。

    编辑:我签了 flicker upload REST API .似乎他们正在使用多部分消息来包含照片和照片属性。

    最佳答案

    Atom Pub 规范已经解决了大部分问题。见 here

    在您提出的解决方案中需要注意的一件事是您正在使用内容协商来交付不同的内容。我相信这被认为是不好的。内容协商应该只交付相同内容的不同表示。

    关于RESTful 设计 - 如何为实体的附件建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1536960/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com