【问题标题】:Pattern for REST API with Image带有图像的 REST API 模式
【发布时间】:2020-08-26 10:03:49
【问题描述】:
我正在创建具有图像上传/检索功能的 REST API。
不是将图像数据发送到服务器,而是将其上传到存储中。
我正在考虑执行以下操作:
- 客户端直接将图片上传到存储(Azure Blob Storage)
- 上传成功则从blob存储中获取图片url
- 将图像元数据连同 blob 存储中的图像 URL 一起发送到要维护的服务器
就通过 Rest API 管理图像数据(或视频或任何非字符串数据)而言,这是一种可接受的方法吗?
另外,以这种方式设置服务有哪些优点/缺点?
【问题讨论】:
标签:
image
api
rest
storage
【解决方案1】:
没有什么可以阻止你这样做,但它会引入一些不必要的复杂性:
客户端需要知道不同的端点来处理这种特殊类型的请求。
如果您的 Azure Blob 存储终结点发生变化,您必须更改客户端代码。如果您的用户使用的是应用程序的旧缓存版本,他们可能会遇到奇怪的错误。
您的客户端必须经过仔细实施,以处理首先将图像上传到 Azure,然后将 URL 发送到 API 的过程。如果用户刷新,再次点击上传按钮,或者如果出现网络问题,您将面临复杂的场景。
我的建议是,您可以将这种复杂性封装在服务器中,这样您就可以更好地控制正在发生的事情,方法是让客户端发送一个 multipart/form-data MIME 类型的 POST 请求。服务器可以使用有关服务器中图像端点的详细信息对此进行响应。