现在的位置: 首页 > 综合 > 正文

使用 WSDL 2.0 描述 REST Web 服务

2013年01月22日 ⁄ 综合 ⁄ 共 1781字 ⁄ 字号 评论关闭

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 服务,将
WSDL 2.0 作为 World Wide Web Consortium (W3C) 建议标准来发布意味着现在有了用于描述 REST Web 服务的语言。

REST

REST 是一种体系结构风格,它将 Web 服务视为以资源为中心的应用程序。实际上,这意味着 RESTful 应用程序中的每个 URL
表示一个资源。URL 还易于理解和记忆。例如,某个书店可能为其销售的图书列表定义 URL http://www.bookstore.com/books/,并对
ISBN 为 0321396855 的特定图书的相关详细信息定义了 URL

http://www.bookstore.com/books/0321396855/。这与以操作为中心的应用程序形成鲜明对比,后者通常具有很长的加密

URL,用于描述要执行的特定操作,例如

http://www.bookstore.com/action/query?t=b&id=11117645532&qp=0321396855。查询参数用于筛选结果。使用同样的书店示例,指定主题参数可以将图书列表限制到关于某个特定主题的图书。例如,URL

http://www.bookstore.com/books/?subject=computers/eclipse 将返回关于 Eclipse 平台的图书列表。

Roy Fielding 博士在他的博士论文中提出了术语
REST,他在其中提到了“作为应用程序状态引擎的超媒体”。这意味着资源预期将包含超链接。这些超链接是用以进行转换的方法,该转换或者改变资源状态,或者转移到另一个资源。虽然超链接在由人类使用的
(X)HTML 应用程序中司空见惯,但它们通常不出现在由计算机使用的 XML 中。与 (X)HTML 一样,REST Web 服务在 XML 中利用了超链接。

传统 Web 应用程序使用 HTTP GET 或 POST 操作来访问资源。相反,RESTful 应用程序全面使用了 HTTP
谓词(POST、GET、PUT 和 DELETE),按照创建、读取、更新和删除 (CRUD) 模式来访问资源。

REST 应用程序存在一个更重要的组件:RESTful 应用程序应该是无状态的。这意味着在 REST
应用程序中,服务器上没有存储任何会话状态。满足请求所需要的所有信息都携带在请求消息本身之中。因此在服务显式地允许的情况下,客户端可以缓存资源的表示形式,从而显著改进应用程序的性能。要了解有关
REST 的更多信息,请参阅本文结尾的参考资料部分。

返回其他内容类型

Web 服务一般将数据作为 XML 返回,但是存在其他对服务使用者有用的内容类型。例如,Asynchronous JavaScript + XML
(Ajax) 应用程序一般最好接收 JavaScript Object Notation (JSON) 数据,而人类使用者可能希望将数据作为可在浏览器中呈现的
HTML 来进行接收。

在 HTTP
世界中,数据格式的选择称为内容类型协商。在内容类型协商中,客户端指定首选的内容类型和可接受的内容类型,然后服务使用最适当的内容类型来响应。这意味着客户端
A 可以向 Web 服务请求 XML 格式的数据,客户端 B 可以请求 JSON 或其他某种类型的数据。

为了赋予客户端请求某种内容类型的能力,可以相应地构造服务,使其利用内置的 HTTP Content-Type 标头:
Content-Type: text/html

对于不理解 Content-Type 标头的应用程序,一种备选方法是在 URL 上指定诸如 cType 等参数,例如在
http://www.bookstore.com/books/?cType=application/xml
中那样。

WSDL 和 REST

WSDL 描述包含 Web 服务的所有详细信息,包括:

本文转自IBM Developerworks中国

      请点击此处查看全文

 

抱歉!评论已关闭.