Java RESTful web服务中的字节数组与基64字符串

Java RESTful web服务中的字节数组与基64字符串,java,rest,base64,Java,Rest,Base64,我的RESTWeb服务必须向客户端发送一个映像文件。我混淆了两个选项:将图像作为字节数组发送,还是将其编码为64进制字符串?每种方法的优缺点是什么?我可能不得不使用gzip压缩图像…它是否会对任何一种方法造成问题?我甚至可能需要将我的方法公开为SOAP服务,在这种情况下我应该选择哪种方法 谢谢 RESTful接口的奇妙之处在于它只是HTTP。因此,如果通过REST公开“字节数组”版本,任何浏览器都可以在REST URL上执行HTTPGET,接收并直接渲染图像。逐字返回有效负载远比在其上放置编码更

我的RESTWeb服务必须向客户端发送一个映像文件。我混淆了两个选项:将图像作为字节数组发送,还是将其编码为64进制字符串?每种方法的优缺点是什么?我可能不得不使用gzip压缩图像…它是否会对任何一种方法造成问题?我甚至可能需要将我的方法公开为SOAP服务,在这种情况下我应该选择哪种方法


谢谢

RESTful接口的奇妙之处在于它只是HTTP。因此,如果通过REST公开“字节数组”版本,任何浏览器都可以在REST URL上执行HTTP
GET
,接收并直接渲染图像。逐字返回有效负载远比在其上放置编码更安静。没有多少建议通过REST提供额外的base64编码层

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


一般来说,压缩图像文件并没有什么好处。图像格式本身在内部涉及压缩,第二次压缩将不会获得更多的空间节省。

如果您的服务返回JSON或XML(图像+一些信息),那么您应该使用Base64编码图像,因为它们都是基于字符串的,并且您希望传输字节数组。唯一的问题是,你是应该自己制作,还是应该使用我的框架

GZip的情况很清楚——将压缩转发到servlet容器(比如tomcat——您可以配置响应是否应该GZip)。或者,您可以使用类似于
GZipFilter
的工具