我需要使用一个REST服务,它具有相对简单和固定(意味着可预测的非常不同的结构),但我无法在其网站上的任何地方找到WADL。我以前使用过SOAP服务,它有一个不错的WSDL,我用它来生成我的客户端应用程序使用Axiom2编组服务数据的Java类。
我的问题是:使用JAX-RS的某些实现(例如Jersey),是否有一种简单的方法可以对WADL进行逆向工程,如果网站缺少WADL,可以轻松生成相应的Java类?另一种问题是:只提供REST服务,没有WADL,以及某种形式的JAX-RS,在客户端生成编组类的最简单方法是什么?
目前,由于结构很简单,我使用Java SE(org.w3c.dom
)中的直接DOM来解析文档的难度很大。它工作正常,但我不喜欢在文档结构中我必须做的所有遍历,我觉得我重新发明了轮子。我相信有更优雅的方式。
答案 0 :(得分:1)
如果您只是这样做,为什么不用手工做?如果你需要定期这样做,那么你可能会因为WADL而失去运气(不过请参阅:https://softwareengineering.stackexchange.com/questions/133145/should-i-use-wadl-to-describe-my-restful-api)。
您是否只是尝试从服务为DTO生成Java类?在这种情况下,您可以从服务中获取一些示例XML,并使用它来生成可能的XSD(可能使用trang)。然后使用XJC生成相应的Java类。
答案 1 :(得分:0)
如果在Jersey中实现REST服务,Jersey应该在运行时自动生成WADL。默认位置为http://server:port/appcontextroot/application.wadl
。如果REST服务使用其他实现,例如RESTEasy,那你就不走运了。 https://issues.jboss.org/browse/RESTEASY-166