【问题标题】:REST binary dataREST 二进制数据
【发布时间】:2012-01-11 09:20:26
【问题描述】:

我正在构建一个接受 Foo 对象的 REST 服务,其中包含字符串 二进制数据的混合。这是我到目前为止得到的 XML。

<foo>
     <text>regular text</text>
     <text mime="application/octet-stream">base64 encododed binary data</text>
</foo>

这是一个好主意还是内嵌大量 (MB) 二进制数据存在缺陷?

作为一个次要的设计细节,我试图在使用&lt;text mime=".."/&gt; 或专用名称&lt;binary&gt;...&lt;/binary&gt; 来处理二进制数据。哪个更连贯?

【问题讨论】:

    标签: java rest binary jaxb resttemplate


    【解决方案1】:

    我建议在您的请求/响应 xml 中仅包含您将存储要传递的二进制数据的位置,然后检索该数据以执行另一个请求。 该解决方案的缺点是执行另一个请求,但优点是站在你这边:

    • 无需序列化/反序列化您的 64 个字符串
    • 更轻松地测试您的休息 ws
    • 不那么臃肿的 xml

    【讨论】:

    • 我同意这将是 RESTful,但 IMO 不实用。序列化是单行/注释,例如 jaxb。
    【解决方案2】:

    HTTP 旨在传输任意长度的有效负载。发送 MB 的数据就可以了。 不建议使用 base64 编码传输数据,因为它会增加您必须通过线路发送的字节数,从而降低吞吐量。

    我建议您考虑使用multipart mime type 而不是 XML。

    【讨论】:

      【解决方案3】:

      您的网络服务容器是什么? xml 的格式将由您的二进制序列化程序生成。 axis2 可能对你有好处。它基于公理,提供直接的二进制支持

      【讨论】:

      • Tomcat 6 和 Spring 控制器,使用 JAXB 序列化数据。
      猜你喜欢
      • 2016-06-06
      • 2020-04-26
      • 2011-03-12
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多