将二进制数据传输到HTTP REST API服务的好方法是什么?

ero*_*ppa 45 api rest http

我们正在扩展我们的HTTP REST API以允许客户端上传图片(出于这个问题的目的,假设二进制数据).到目前为止,我们只允许在API参数中使用简单的字符串.允许他们上传二进制数据的好方法是什么?是否要求base64编码形式?URL是否会变得太长以至于Web服务器无法处理?

有什么建议/最佳实践吗?

Eug*_*sky 43

只需将二进制数据按原样发送到POST主体中,但使用适当的Content-Type标头(例如image/jpeg) - 我认为这是最"RESTful"的方式.

(一般来说,在设计REST服务时,根据经验,使用HTTP协议的次数越多,而不是像base64那样尝试覆盖不必要和复杂的东西,就越好.HTTP是最终的RESTful协议和内容类型允许"代表国家转移"中的不同"表示"

要记住的另一种可能性是接受图像URL而不是实际的物理文件.这使得独立应用程序更难以识别,例如从用户的驱动器读取图像,但使mashup类型的应用程序更容易,其中图像可能作为来自其他服务的URL返回.

当然,您可以同时使用这两个选项.

  • @Pacerier 用于通用二进制数据使用 application/octet-stream (5认同)
  • 对于不是 jpeg 图像的自定义二进制数据,我们应该使用什么内容类型? (2认同)