2011-07-26 53 views
32

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

感谢

回答

35

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

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


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

3

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

我建议你看看ibm的developerworks网站上提供的主题有趣的文章http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/
希望它有帮助。


严格,与WSDL 1.0,你可以”吨,但与WSDL2就可以了,因为研究出了接受这种需求,

” ...... WSDL 2.0的WS-I简要描述了REST风格的Web服务的要求 在SOAP 1.2中增加了GET,在WSDL 2.0中增加了几个 ,如操作安全性,描述引用其他Web服务的 消息的能力以及改进的HTTP绑定 现在可以描述REST风格的Web服务。“,Arthur Ryman

1

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

3

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

我认为使用WSDL是

  • 形式化LEVEL的问题:与WSDL你可以表达更多正式的web服务的所有相关细节。
  • 稳定性水平:如果您需要长期合同,并避免Web服务暴露环境发生变化的风险,WSDL有助于保持稳定性。
  • 需要标准:如果客户偏好可以说是“符合标准”的web服务,请使用标准。唯一的一个是W3C,W3C需要XML,SOAP和WSDL。
5

W3C已根据WSDL 2.0REST documentation standard作出正式建议。下面是从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服务。 WSDL 2.0, 的发布是基于REST Web服务而设计的,作为万维网联盟(W3C)的推荐意味着现在有一种语言 描述了REST Web服务。