基于 REST 的 Web 服务及其基于 Ajax 的客户端
级别: 中级
Shailesh K. Mishra (3710167@qq.com.com),
软件工程师, IBM
2007 年 9 月 17 日
基于 REST 的 Web 服务是使用 REpresentational State Transfer (REST) 体系结构风格构建的 Web 服务。本文介绍了一种编写基于 REST 的 Web 服务的方法,其中使用一个简单的代理 Servlet 和基于 Asynchronous XML +
JavaScript (Ajax) 的客户端。
引言
在 Roy Fielding 的论文中,他将 REST 作为目前 Web 体系结构的一种基础概念进行了详细介绍(请参见本文结尾处的参考资料,以获取 Fielding 的论文的链接)。他为 REST 提出了下列标准:
* 为现代 Web 体系结构进行建模的一组约束。
* REST 原则已应用于 HTTP 和 URI 规范。
* 在 HTTP 的发展过程中是可见的。
REST 不是一种协议,而是一种体系结构风格,这是非常重要的区别。
对于 Web 服务,W3C 对 Web 服务的正式定义如下所示:
"Web 服务是由 URI 标识的一个软件
系统,并且使用 XML 对它的公共接口和绑定进行定义和描述。其他软件系统可以发现它的定义。然后,这些系统就可以按照 Web 服务预先确定的方式与它进行交互,并使用通过 Internet 协议传输的基于 XML 的消息。"(请参见参考资料以获取有关这个摘录的链接。)
查看 Ajax 资源中心,它是提供 Ajax 编程模型方面信息的一站式商店,包括文章和教程、讨论论坛、Blog、Wiki、活动和新闻。只要是与之相关的内容,在这个资源中心都会提供相应的介绍。
常识告诉我们,Web 服务主要用于
计算机与计算机之间的
通信,而不是计算机与用户之间的通信。基于 REST 的 Web 服务是使用 REST 体系结构风格创建的 Web 服务,下一个部分中将通过一个示例来说明如何构建基于 REST 的 Web 服务。要掌握这一内容,您首先需要了解 Ajax,这是很重要的。(如果您是 Ajax 方面的新手,那么请参考参考资料以获取一些有价值的信息的链接。)
创建基于 REST 的 Web 服务
要创建基于 REST 的 Web 服务,您首先需要确定希望作为 Web 服务进行公开的所有资源。一些资源的示例包括雇员
列表、雇员详细信息、订购单,等等。在 REST 中,每种资源都是通过唯一的统一资源标识符(Uniform Resource Identifier,URI)来标识的。您需要为每种资源确定唯一的 URI。例如,雇员列表可以标识如下:http://www.employee-details.com/employees-list。雇员详细信息可以使用如下所示的 URI 进行标识:http://www.employee-details.com/employees/01234。
使用 HTTP 操作 GET、PUT、POST 和 DELETE 以检索和修改您的资源。在您的资源表示中提供一些超链接,以提供更多的相关信息。为这些资源的请求和响应数据指定格式,这需要 PUT 和 POST 操作。
图 1 中的关系图显示了与一个基于 REST 的 Web 服务之间的交互。
图 1. 与一个基于 REST 的 Web 服务之间的交互
实现基于 REST 的 Web 服务
您可以使用 HTTP Servlet 来实现基于 REST 的 Web 服务。本文使用一个虚拟的服务
演示了实现的过程,而这个服务提供了有关公司雇员的详细信息。雇员列表资源使用一个逻辑 URI 进行表示,http://localhost:9080/AJAX_REST_Demo/RESTDemoServlet/employee-list。当通过 HTTP GET 调用这个服务时,它将返回如清单 1 中所示的雇员列表。
清单 1. 使用 HTTP GET 调用雇员列表
xml version='1.0' encoding='UTF-8'?>
类似地,雇员详细信息可以使用一个逻辑 URI 进行表示,如 http://localhost:9080/AJAX_REST_Demo/RESTDemoServlet/employee/0124。