创造最佳 API:上传 N 个文件和 json 元数据
Creating best API: Upload N files and json metadata
我正在创建一个 API。
我不确定 API 应该是什么样子。
应上传多个 BLOB 文件(PDF、JPG、ZIP 等)并
一些 JSON 包含元数据。
设计 API 的最新方法是什么?
有两种情况:
- 上传成功。那我觉得201(创建)是可行的
- 上传不成功(例如元数据无效)。然后应该返回 422(无法处理的实体)。
示例:
- 应(一次)上传三个与某些 json 元数据关联的 pdf 文件。
您经常看到的是,您有一种资源用于处理 BLOB,一种用于处理元数据 - Facebook 和 Twitter 正在为图像和视频执行此操作。
例如 /files
将使用您的 BLOB 数据和 return 上传的 BLOB 数据的 ID。
元数据将被发送到另一个资源,称为 /posts
并且可以使用 application/json
。
在我目前工作的应用程序中,我们遇到了同样的问题并决定使用一个端点消耗 multipart/form-data
- 在这里您可以在不同的边界内发送 BLOB 和元数据,并将所有内容都放在一个资源中。
另一种方法是 base64
对 BLOB 进行编码,这将导致 33% 的开销,因此我不推荐这样做。但是使用 base64,您可以在一个 application/json
资源中完成所有工作。
我正在创建一个 API。
我不确定 API 应该是什么样子。
应上传多个 BLOB 文件(PDF、JPG、ZIP 等)并 一些 JSON 包含元数据。
设计 API 的最新方法是什么?
有两种情况:
- 上传成功。那我觉得201(创建)是可行的
- 上传不成功(例如元数据无效)。然后应该返回 422(无法处理的实体)。
示例:
- 应(一次)上传三个与某些 json 元数据关联的 pdf 文件。
您经常看到的是,您有一种资源用于处理 BLOB,一种用于处理元数据 - Facebook 和 Twitter 正在为图像和视频执行此操作。
例如 /files
将使用您的 BLOB 数据和 return 上传的 BLOB 数据的 ID。
元数据将被发送到另一个资源,称为 /posts
并且可以使用 application/json
。
在我目前工作的应用程序中,我们遇到了同样的问题并决定使用一个端点消耗 multipart/form-data
- 在这里您可以在不同的边界内发送 BLOB 和元数据,并将所有内容都放在一个资源中。
另一种方法是 base64
对 BLOB 进行编码,这将导致 33% 的开销,因此我不推荐这样做。但是使用 base64,您可以在一个 application/json
资源中完成所有工作。