使用不提供WADL的REST服务

时间:2013-03-15 22:24:28

标签: java rest jersey jax-rs wadl

我需要使用一个REST服务,它具有相对简单和固定(意味着可预测的非常不同的结构),但我无法在其网站上的任何地方找到WADL。我以前使用过SOAP服务,它有一个不错的WSDL,我用它来生成我的客户端应用程序使用Axiom2编组服务数据的Java类。

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

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

2 个答案:

答案 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