1

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

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

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

4

2 回答 2

1

如果你只做一次,为什么不用手做呢?如果您需要定期执行此操作,那么您可能会在 WADL 上不走运(顺便看看:https ://softwareengineering.stackexchange.com/questions/133145/should-i-use-wadl-to-describe-my-宁静的API)。

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

于 2013-03-16T00:02:41.547 回答
0

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

于 2013-03-16T03:42:42.607 回答