【问题标题】:rest + xop / binary data embedded in xml responserest + xop / 嵌入在 xml 响应中的二进制数据
【发布时间】:2011-05-25 07:51:01
【问题描述】:

我的任务是将二进制数据(如图片、音乐、缩略图等)嵌入到 xml 元数据容器中,以便通过 REST 接口发布整个包。目前我们在项目中使用 Jersey 和 spring。 我真的不想回到soap/wsdl(这似乎是每个基于ws的问题的默认答案)或任何容器格式(如zip)只是为了通过网络获取数据,所以我搜索了一段时间适当的解决方案。

我发现推荐使用 XOP 格式将内容嵌入到 xml 中,这是 SOAP 中使用的 MTOM 协议的一部分,但我没有看到直接通过 REST 提供 XML+XOP 响应的解决方案。

我的问题:有人可以提示我如何使用 Jersey/spring 实现 XOP + REST 吗?我看过暗示有人以前做过的帖子......

最好的问候,
时间

【问题讨论】:

    标签: java web-services rest jersey xop


    【解决方案1】:

    为什么要将二进制数据嵌入到 XML 中?有很多方法可以将二进制资源与其对应的元数据相关联,而无需尝试将其填充到单个表示中。

    您正在破坏 REST HTTP 的主要优势之一。根据需求处理多种不同媒体类型的能力是使用 REST over HTTP 比 SOAP 更有效的原因之一。

    考虑像 Atom 那样检索包含指向二进制资源的链接的元数据的 XML 表示。如果要先检索二进制文件,请考虑将链接标头指向元数据。有很多比尝试将二进制数据填充到 XML 中更好的方法。

    【讨论】:

    • 感谢您的回答。可悲的是,拆分内容是没有选择的。原因之一是背后有一个根据 acls 捆绑内容的安全模型。另一个原因是必须完全传输捆绑包 - 想象一下如果由于客户端没有立即发起请求而导致消息的某些部分丢失,这是一种致命的情况。最后也是最重要的一点是,现在我无法做出项目范围内的决策 :)
    • @Tim 根据 XOP 规范 http://www.w3.org/TR/xop10/,您只需使用 Multipart/Related 作为媒体类型。这种媒体类型的编码和解码与 REST 完全正交,因此诀窍是找到一个可以处理 Multipart/Related 内容的 Java 库。那时,我什至不确定你是否需要 XOP。
    • 谢谢达雷尔。在某些时候,这正是我之前发现的。如果我碰巧有足够的时间,我会尝试评估这个解决方案,如果它被证明是成功的,我会在这里多写几行。
    【解决方案2】:

    我不确定 Jersey,但 CXF 支持 XOP。或许你可以从中汲取灵感?

    http://cxf.apache.org/docs/jax-rs-multiparts.html#JAX-RSMultiparts-XOPsupport

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 2013-06-18
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 2016-08-11
      • 2018-11-03
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多