2011-05-09 81 views
6

当公司想要发布Web服务时,它是否为SOAP释放单独的WSDL并为基于REST的Web服务分离,还是将它们合并到相同的WSDL中? WSDL能否代表基于JSON(而不是XML)的REST Web服务?WSDL for SOAP和基于JSON的REST和REST的WSDL

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

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

回答

6

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

编辑:

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

+0

感谢您的信息,但它不回答我在我的问题中提出的大部分内容。 – ace 2011-05-09 12:32:50

2

能否在WSDL仅表示基于JSON(不是XML)REST的Web服务

WSDL 2可以通过使用模式定义的XML类型描述XML。见this introduction on WSDL 2 for REST

虽然,TBH我从来没有为REST编写过WSDL,我只是发布了这些类型的URL和模式。

1

由于工具尚不完善,我怀疑许多人在单个WSDL中使用SOAP和HTTP绑定。虽然两者都可以在WSDL 2.0中表示,同时,由于大多数人依靠工具来管理他们的WSDL(以及WS栈的其他部分),所以他们可能根本就不打扰他们,并且只保留他们的WSDL。

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

当这些工具在服务器端和客户端都能够满足时,那么WSDL 2.0中的HTTP服务绑定在实践中可能会有更多的采用。这个习惯用法是否将规范混合到一个WSDL中,还有待观察。

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

+0

其2017年,有这种情况发生了变化吗? – 2017-07-27 19:13:05