首页 文章

REST API - 包含元数据的文件 - 如何提交它们

提问于
浏览
0

假设我正在创建一个服务来管理带有元数据的文件 . 正如another thread中已经在SO上所讨论的那样,首选的方法是创建两个资源:

  • 文件(即GET / files / ) - 二进制文件,

  • 元数据(即GET / files / / metadata) - 关联的元数据 .

问题是 - 允许客户上传元数据文件的最佳方法是什么?以下方法怎么样:

  • POST /文件 - 客户端上传二进制文件,该服务创建新的文件资源和相应的新的空(即默认值)元数据资源,并返回文件资源的ID(即fileId) .

  • PUT / files / / metadata - 客户端设置元数据 .

我看到这种方法有一个缺点 - 让我们说一些元数据是强制性的 . 使用此流程,客户端可能仅上载文件但不填充元数据,从而使数据处于不一致状态 .

另一方面,允许客户端同时发送文件和元数据似乎很奇怪,因为它是两个不同的资源 .

你会怎么处理这个?

1 回答

  • 1

    另一方面,允许客户端同时发送文件和元数据似乎很奇怪,因为它是两个不同的资源 .

    内容和元数据可能表示为服务器中的不同资源,但它们彼此密切相关,创建一个没有另一个是没有意义的 . 例如,可能有客户端只需要元数据,因此他们可以显示文件列表或单个文件的详细信息 . 另一方面,您需要元数据,以便客户端至少知道他们下载的文件的名称 . 所以你需要它们 .

    's why it'最好在单个multipart http请求中上传文件/内容和元数据 . 在单个请求中上传所有内容会使您的系统更加一致,因为它消除了上载内容但元数据不是(或相反)的各种情况 .

    多部分请求基本上是一个具有元数据(作为字符串)和其主体内容的请求 . 唯一困难的部分是 Headers . 请查看上面的链接以获取有关多部分请求的更多信息,此外,您可能希望找到一个类(或类系列)来处理多部分标头(取决于您的平台/语言) .

    此外 - 将元数据和内容作为不同的资源对客户端有益 - 他们可能只下载两个中的一个,在大文件的情况下节省网络流量(时间) .

相关问题