WSDL for SOAP 和 WSDL for REST 和基于 JSON 的 REST
Posted
技术标签:
【中文标题】WSDL for SOAP 和 WSDL for REST 和基于 JSON 的 REST【英文标题】:WSDL for SOAP and WSDL for REST and REST based on JSON 【发布时间】:2011-05-09 11:42:55 【问题描述】:当一家公司想要发布 Web 服务时,它是为 SOAP 发布一个单独的 WSDL,为基于 REST 的 Web 服务发布一个单独的 WSDL,还是将它们合并到同一个 WSDL 中? WSDL 能否仅表示基于 JSON(而非 XML)的 REST Web 服务?
假设 Web 服务客户端是基于 Java 的。
如果 SOAP 和 REST 合并到同一个 WSDL 中,wsimport 是否会为 SOAP 生成单独的类(用于将 XML 绑定到 Java 对象)并为 REST 生成单独的类?
【问题讨论】:
JAX-WS For Json request and response的可能重复 @Vadzim 可能的重复仅与 SOAP 相关,不涉及此问题的任何 REST 方面。 【参考方案1】:您需要 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。
【讨论】:
感谢您提供信息,但它不能回答我在问题中提出的大部分问题。【参考方案2】:WSDL 能否仅代表 REST Web 基于 JSON(不是 XML)的服务
WSDL 2 可以通过使用模式定义 XML 类型来描述 XML。见this introduction on WSDL 2 for REST。
虽然,TBH 我以前从未为 REST 编写过 WSDL,但我只是发布了这些类型的 URL 和架构。
【讨论】:
【参考方案3】:由于工具还没有完全成熟,我怀疑很多人在单个 WSDL 中使用 SOAP 和 HTTP 绑定。尽管两者都可以在 WSDL 2.0 中表示,同时,由于当今大多数人都依赖工具来管理他们的 WSDL(以及 WS 堆栈的其余部分),他们可能根本不会打扰他们的 WSDL。
此外,大多数 REST 人员正在手动构建他们的客户端,而不是依赖工具和 WSDL,因此这些人目前并没有“缺少”工具和对此的支持。
当这些工具在服务器端和客户端都赶上时,WSDL 2.0 中的 HTTP 服务绑定在实践中可能会得到更多采用。习惯用法是否会将 to 规范合并为单个 WSDL,还有待观察。
如果他们想在相同的端点上托管它们,那么他们很可能会这样做。
【讨论】:
2017年了,这种情况有变化吗?以上是关于WSDL for SOAP 和 WSDL for REST 和基于 JSON 的 REST的主要内容,如果未能解决你的问题,请参考以下文章