rest - 创建最佳 API : Upload N files and json metadata

标签 rest http api-design

我正在创建一个 API。

我不确定 API 应该是什么样子。

应该上传几个 BLOB 文件(PDF、JPG、ZIP 等)并 一些包含元数据的 JSON。

设计 API 的最新方法是什么?

有两种情况:

  • 上传成功。那我觉得201(创建)是可行的
  • 上传不成功(例如元数据无效)。然后应该返回 422(无法处理的实体)。

例子:

  • 应该(一次)上传三个与一些 json 元数据相关联的 pdf 文件。

最佳答案

您经常看到的是,您有一个资源用于处理 BLOB,一个资源用于处理元数据 - Facebook 和 Twitter 正在为图像和视频执行此操作。

例如,/files 将获取您的 BLOB 数据并返回上传的 BLOB 数据的 ID。

元数据将被发送到另一个资源,称为 /posts 并且可以使用 application/json

在我目前工作的应用程序中,我们遇到了同样的问题并决定使用一个端点消耗 multipart/form-data - 在这里您可以在不同的边界内发送 BLOB 和元数据,并且一切都在一个资源中。

另一种方法是 base64 对 BLOB 进行编码,这将导致 33% 的开销,因此我不推荐这样做。但是使用 base64,您可以在一个 application/json 资源中完成所有工作。

关于rest - 创建最佳 API : Upload N files and json metadata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52297639/

相关文章:

rest - 响应 PATCH 请求

java - 使用 Swagger 的 CXF REST API 文档

java - 将动态应用程序部署到 Eclipse 上的 Tomcat 服务器后,Spring Web REST API 的 HTTP 状态 404

angularjs - Angular 指令、http 请求和 ng-repeat

java - Http 发布请求

asp.net - ERR_CONNECTION_REFUSED Asp.Net Core + Angular 10

javascript - 我应该在 API 中公开可导出字段吗?

java - Jersey 异常 : A message body reader for Java class and MIME media type application/x-www-form-urlencoded was not found

java - 在等待 WebService 调用时将线程用于不同的东西

zend-framework - 商店和模型上的自定义代理似乎不一致(并且不适用于模型)