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

标签 java rest base64

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

谢谢!!

最佳答案

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

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

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

关于java - RESTful Web 服务中的字节数组与 Base 64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4853886/

相关文章:

java - 从android webview中的base64 url​​下载文件

java - 如何使用 Scala 覆盖 java.awt.Component 中的字体?

java - 使用 Java,如何通过 adb 以编程方式获取 ddmlib FileEntry 对象以获取 sdcard 中的某些内容?

java - 在同一个 Spring Boot 应用程序中多次监听同一事件时处理轴突中的异常

java - Base64 编码和解码不会给出相同的结果

java - 使用 restful 方法重定向到页面?

用于获取用于 hadoop 中各个节点的 dfs 的 Rest Api

python-3.x - 如何从 Base64 转换为字符串 Python 3.2

c++ - 如何在 C++ 中将 base64 字符串转换为十六进制字符串?

java - 如何在端口后的 URL 中使用应用程序名称(就像我们在 tomcat 部署的应用程序中所做的那样)来调用 GWT 应用程序中的其余 Web 服务?