REST Web服务WSDL? [重复]

问题描述 投票:37回答:7

这个问题在这里已有答案:

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

谢谢

web-services rest soap wsdl wadl
7个回答
38
投票

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

当然,这并没有捕获更深层次的交互模式,但绝大多数服务的WSDL描述都没有改变。


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


6
投票

W3C已经基于REST documentation standard正式推荐了WSDL 2.0。以下是IBM article的引用:

术语Web服务通常与使用SOAP和WS *标准的基于操作或动作的服务相关联,例如WS-Addressing和WS-Security。术语REST Web服务通常是指使用HTTP和XML的基于资源的Web服务体系结构。这些架构Web服务样式中的每一种都有它的位置,但直到最近,WSDL标准并不同样支持这两种样式。 WSDL 1.1 HTTP绑定不足以描述与HTTP和XML的通信,因此无法使用WSDL正式描述REST Web服务。考虑到REST Web服务而设计的WSDL 2.0的发布,作为万维网联盟(W3C)推荐意味着现在有一种语言来描述REST Web服务。


3
投票

当然这是可能的,但如果有必要或是没有答案,你没有提供足够的信息。

我建议你看看ibm的developerworks网站,它提供了一篇关于主题http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/的有趣文章 希望能帮助到你。


严格来说,使用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
投票

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

我认为使用WSDL是一个问题

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

3
投票

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

它还提供Java annotations以实现RestDoc文档的即时创建。有关Jersey 1.xJAX-RS 2.0的实现。


1
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.