REST Web 服务 WSDL? [复制]

Posted

技术标签:

【中文标题】REST Web 服务 WSDL? [复制]【英文标题】:REST web service WSDL? [duplicate] 【发布时间】:2011-10-13 10:06:11 【问题描述】:

我正在实现一个 Web 服务,并且我已经实现了 REST 和 SOAP 版本,以查看哪个版本适合我的需求。我决定选择 REST 是因为它的简单性,而且我可能会开发一个 iPhone 应用程序来使用它。我的问题真的很简单,是否可以为我的 REST 服务创建 WSDL 或 WADL,是否有必要?

谢谢

【问题讨论】:

【参考方案1】:

W3C 已根据 [WSDL 2.0][3] 正式推荐 REST documentation standard。以下是 IBM 文章的引述:

Web 服务一词通常与操作相关联,或者 使用 SOAP 和 WS* 标准的基于操作的服务,例如 WS-Addressing 和 WS-Security。术语 REST Web 服务一般 指使用 HTTP 的基于资源的 Web 服务架构 和 XML。这些架构 Web 服务风格中的每一种都有其位置, 但直到最近,WSDL 标准才同样支持这两者 样式。 WSDL 1.1 HTTP 绑定不足以描述 与 HTTP 和 XML 通信,所以没有办法正式 用 WSDL 描述 REST Web 服务。 WSDL 2.0 的发布, 在设计时考虑了 REST Web 服务,作为万维网 联盟 (W3C) 推荐意味着现在有一种语言可以 描述 REST Web 服务。

【讨论】:

【参考方案2】:

当然有可能,但是否需要回答,您没有提供足够的信息。

我建议您查看 ibm 的 developerworks 网站,该网站提供了一个有趣的 article 主题


严格来说,WSDL 1.0 不能,但 WSDL2 可以,因为是为接受这种需求而开发的,

"... WS-I 概要文件中的 WSDL 2.0 解决了需求 用于 REST 样式的 Web 服务。 SOAP 1.2 中添加的 GET 和几个 WSDL 2.0 中的新增功能,例如操作安全性、描述能力 引用其他 Web 服务的消息,以及改进的 HTTP 绑定 现在可以描述 REST 风格的 Web 服务。", Arthur Ryman。

【讨论】:

【参考方案3】:

WADL 不是必需的。但是,如果客户端代码已经存在于应用程序中,并且您想要进行新的 rest 调用,那么使用 wadl 生成客户端 java stub(POJO) 是一种很好的做法。通过这种方式,客户端 POJO 将与服务端 POJO 同步。例如,如果您在现有应用程序中将 EJB/SOAP 服务调用替换为 Rest 服务调用,那么使用 WADL 是非常安全和良好的做法。

您可以使用 wadl2java maven 插件从 WADL 生成客户端 java 存根。

【讨论】:

【参考方案4】:

RestDoc 尝试为 REST 资源创建一个简单的文档框架。 浏览器可通过restdoc-renderer 获得。

它还提供Java annotations 以支持即时创建 RestDoc 文档。实现适用于Jersey 1.x 和JAX-RS 2.0。

【讨论】:

【参考方案5】:

正如@GiuliaDiFederico 所说,“当然有可能”(使用 WSDL2),显示了一个关于如何做的很好的源链接。另一方面,@DonalFellows 不鼓励使用 WSDL...

我认为WSDL的使用是一个问题

FORMALIZATION LEVEL:使用 WSDL,您可以更正式地表达您的 Web 服务的所有相关细节。 稳定性水平:如果您需要长期合同,并避免您的 Web 服务暴露的环境发生变化的风险,WSDL 有助于保持稳定性。 需要标准:如果客户更喜欢可以说“符合标准”的 Web 服务,请使用标准。唯一的就是 W3C,而 W3C 需要 XML、SOAP 和 WSDL。

【讨论】:

【参考方案6】:

有了良好的 RESTful 服务,就没有必要为它生成 WADL(更不用说不太合适的 WSDL)了,因为它会自我描述。通过“自我描述”,我的具体意思是它将提供描述服务发布的所有(相关)资源的文档,并且对任何这些资源使用标准 HTTP OPTIONS 请求将产生有关如何交互的基本信息。使用 WADL 的唯一真正好处是它允许调用者提前发现它需要处理的复杂文档的模式; REST 本身在这方面没有提供任何帮助(一些 REST 人认为这样做会适得其反,我不确定我是否同意)。

当然,这并没有捕捉到更深层次的交互模式,但是绝大多数服务的 WSDL 描述也没有,所以那里没有变化。


作为记录,我使用 Apache CXF 创建 RESTful 服务(使用 JAX-RS)并为它们发布 WADL。

【讨论】:

【参考方案7】:

我认为 WSDL 不适合 REST,WADL 也不是必需的。 HTTP 已经公开了 WADL 可以在单独文件中描述的内容。例如“允许”标头返回允许的 HTTP 方法,内容协商用于选择正确的格式。

【讨论】:

以上是关于REST Web 服务 WSDL? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

比较和对比 REST 和 SOAP Web 服务? [复制]

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

SOAP/WSDL/XSD 和 REST 方法之间的比较

Microsoft Web API 生成 WSDL 的最简单路径

Salesforce SOAP 接口集成服务

RESTful服务 - WSDL等效