2011-01-31 56 views
3

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

谢谢!

回答

5

有关RESTful接口的奇妙之处在于它只是HTTP。因此,如果您通过REST公开“字节数组”版本,则任何浏览器都可以在您的REST URL上执行HTTP GET,并接收并直接渲染您的图像。逐字地返回有效载荷比放置一个编码更加RESTful。没有太多可以通过REST推荐额外的base64编码层。

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

一般来说,通过压缩图像文件没有好处。图像格式本身在内部涉及压缩,而第二个压缩过程不会获得更多空间节省。

1

如果你的服务返回JSON或XML(图像+一些信息),比你应该在64位编码图像,因为它们都是基于字符串,并且你想传输字节数组。唯一的问题,你应该自己做还是应该让你使用我的框架。

GZip的情况很明显 - 对servlet容器进行中继压缩(如tomcat--可以配置,是否应该对gzip进行响应)。或者,您可以使用类似GZipFilter的东西。

相关问题