当公司想要发布Web服务时,是否为SOAP发布单独的WSDL并为基于REST的Web服务单独发布,或者它们是否在同一个WSDL中合并? WSDL只能表示基于JSON(而不是XML)的REST Web服务吗?
假设Web服务客户端是基于Java的。
如果SOAP和REST在同一个WSDL中合并,那么wsimport是否为SOAP生成单独的类(用于绑定XML到Java对象),并为REST分开?
答案 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混淆,还有待观察。
如果他们想要在相同的终点上托管他们,那么他们可能会。