【问题标题】:Consuming REST service that doesn't offer WADL使用不提供 WADL 的 REST 服务
【发布时间】:2013-03-15 22:24:27
【问题描述】:

我需要使用具有相对简单和固定的 REST 服务(这意味着可以预见的结构不是很变体),但我在他们网站的任何地方都找不到 WADL。我以前使用过 SOAP 服务,它有一个不错的 WSDL,我用它来生成我的 Java 类,我的客户端应用程序使用 Axiom2 将服务数据编组到这些类。

我的问题是:有没有一种简单的方法来逆向工程一个 WADL,如果站点缺少相应的 Java 类,使用它可以轻松地生成相应的 Java 类,使用 JAX-RS 的某些实现(例如 Jersey)?另一种问法是:只给定一个 REST 服务,没有 WADL 和某种形式的 JAX-RS,在客户端生成编组类的最简单方法是什么?

目前,由于结构很简单,我使用 Java SE (org.w3c.dom) 中的直接 DOM 来解析文档。它工作得很好,但我不喜欢在文档结构中必须做的所有遍历,我觉得我重新发明了轮子。我相信还有更优雅的方式。

【问题讨论】:

    标签: java rest jersey jax-rs wadl


    【解决方案1】:

    如果您只做一次,为什么不直接用手做呢?如果您需要定期执行此操作,那么您可能会在 WADL 上不走运(旁注:https://softwareengineering.stackexchange.com/questions/133145/should-i-use-wadl-to-describe-my-restful-api)。

    您是否只是想从服务中为 DTO 生成 Java 类?在这种情况下,您可以从服务中获取一些示例 XML,并使用它来生成可能的 XSD(可能使用trang)。然后使用XJC生成对应的Java类。

    【讨论】:

      【解决方案2】:

      如果 REST 服务在 Jersey 中实现,Jersey 应该在运行时自动生成 WADL。默认位置是http://server:port/appcontextroot/application.wadl。如果 REST 服务使用其他实现,例如 RESTEasy,那么您就不走运了。 https://issues.jboss.org/browse/RESTEASY-166

      【讨论】:

      • 其实我是想用 Jersey 来消费,而不是实现服务。在客户端
      猜你喜欢
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      相关资源
      最近更新 更多