RESTful Web 服务中的字节数组与 Base 64 字符串

2022-09-03 14:20:32

我的 REST Web 服务必须将图像文件发送到客户端。我在2个选项之间感到困惑:将图像作为字节数组发送,还是应该将其编码为基数64字符串?每种方法的优缺点是什么?我可能不得不使用gzip压缩图像...它应该用任何一种方法产生问题吗?我甚至可能需要将我的方法公开为SOAP服务,在这种情况下我应该选择哪种方法?

谢谢!!


答案 1

RESTful接口的美妙之处在于它只是HTTP。因此,如果您通过REST公开“字节数组”版本,则任何浏览器都可以在您的REST URL上执行HTTP,并接收并直接呈现您的图像。逐字返回有效负载比在其上放置编码要多得多。通过 REST 推荐额外的 base64 编码层并不多。GET

如果要返回 SOAP,则绝对希望返回 base64 字符串。原始二进制数据与 XML 不兼容,而 SOAP 就是基于 XML 构建的。您可以尝试通过 MTOM 解决此问题,但为了与 SOAP 客户端实现通用兼容性,您可能需要内联的 base64 编码数据。

通常,压缩图像文件没有任何好处。图像格式本身在内部涉及压缩,第二次压缩过程不会再节省任何空间。


答案 2

如果您的服务返回 JSON 或 XML(图像 + 一些信息),则应以 base 64 为单位对图像进行编码,因为它们都是基于字符串的,并且您希望传输字节数组。唯一的问题是,你是否应该自己制作它,或者它应该成为我使用的框架。

GZip的情况很清楚 - 中继压缩到servlet容器(如tomcat - 您可以配置响应是否应该gzip)。或者,您可以使用类似 .GZipFilter


推荐