用于SOAP的WSDL和基于JSON的REST和REST的WSDL

时间:2011-05-09 11:42:55

标签: java web-services rest soap wsdl

当公司想要发布Web服务时,是否为SOAP发布单独的WSDL并为基于REST的Web服务单独发布,或者它们是否在同一个WSDL中合并? WSDL只能表示基于JSON(而不是XML)的REST Web服务吗?

假设Web服务客户端是基于Java的。

如果SOAP和REST在同一个WSDL中合并,那么wsimport是否为SOAP生成单独的类(用于绑定XML到Java对象),并为REST分开?

3 个答案:

答案 0 :(得分:7)

您需要WSDL 2.0(或WADL)来描述REST服务。目前对WSDL 2.0的支持非常有限,wsimport不支持它。我不是Java开发人员,但我认为wsimport仅适用于SOAP服务(JAX-WS,它也不支持WSDL 2.0)。

编辑:

检查this extension。它应该允许您使用JSON编码公开JAX-WS服务。它还应该公开“JavaScript代理”来调用JSON服务。为了更准确地回答您的问题 - 我认为您不能在没有WSDL 2.0或WADL的情况下描述REST服务。因此,您无法将SOAP和REST服务合并到大多数堆栈支持的单个WSDL 1.1。有关描述JSON服务检查this question

的进一步参考

答案 1 :(得分:2)

  

WSDL是否只能代表REST Web   基于JSON(非XML)的服务

WSDL 2可以通过使用模式定义XML类型来描述XML。请参阅this introduction on WSDL 2 for REST

虽然,我以前从未为REST编写WSDL,但我只是发布了类型的URL和模式。

答案 2 :(得分:1)

由于工具尚未完全存在,我怀疑很多人在单个WSDL中使用SOAP和HTTP绑定。虽然两者都可以在WSDL 2.0中表示,但同时,由于大多数人依靠工具来管理他们的WSDL(以及WS堆栈的其余部分),他们可能根本就不会费心并且只留下他们的WSDL。

此外,大多数REST人员都是手工构建客户端,而不是依赖于工具和WSDL,因此这些人目前并没有“缺少”工具和支持。

当工具赶上服务器端和客户端端时,实际上可能会更多地采用WSDL 2.0中的HTTP服务绑定。无论成语是否将规范与特定WSDL混淆,还有待观察。

如果他们想要在相同的终点上托管他们,那么他们可能会。