本文将介绍 Apache Wink,演示如何安装它,并附带一个简单的管理任务列 表的 RESTful Web 服务。本文的示例基于 Apache Wink 发行版携带的 Bookmarks 示例。尽管如此,本文中的示例使用了不同的消息格式,可以使用 Asynchronous JavaScript + XML (Ajax) 从 Web 页面轻松调用,从而丰富了用 户体验。
REST 和 Ajax
RESTful Web 服务通过使用某种 URL 结构公开,并提 供了一个简化的接口来对 Web 服务进行创建、读取、更新和删除(CRUD)操作 。RESTful Web 服务可以使用并提供各种不同格式的消息,这些消息都能被 Multipurpose Internet Mail Extensions(MIME) 类型识别,包括 JavaScript Object Notation(JSON)、XML 以及其他二进制数据。
RESTful Web 服务 的简单性使得使用 Web 客户端技术(如 Ajax)进行访问变得更容易。使用 JSON 作为消息格式的能力又进一步简化了交互。
REST
与 SOAP 不同,RESTful Web 服务并不一定需要 XML 文档作为消息载体。并没有标准的 XML Schema Definition(XSD) 描述消息格式。这使得 RESTful Web 服务可以像 访问 URL 时返回的文档一样简单。实际上,Web 页面确实符合 RESTful Web 服 务的配置文件。
由于消息格式并不需要使用 XML,因此几乎支持所有类 型的消息内容。例如,可以将普通文本提交给 URL 以对一个 RESTful Web 服务 调用 POST 方法。也可以使用其他简单消息格式,例如 JSON。Apache Wink 能 够匹配 HTTP 操作中识别的 MIME 类型和使用并提供给定 MIME 类型的服务方法 。
RESTful Web 服务使用不同的 HTTP 操作来公开服务,而这些服务执 行不同的操作。尽管本身没有确定的标准,但有些原则定义了对特定的任务使用 哪些 HTTP 操作。请看表 1。
表 1. REST 操作和 URL 示例
HTTP 操作 | URL 样例 | 用途 |
GET | http://localhost:8080/Task/rest/tasks | 列举出服务搜索到的所有任务 |
GET | http://localhost:8080/Task/rest/tasks/1< /td> | 获得 ID 为 1 的任务 |
POST | http://localhost:8080/Task/rest/tasks | 根据提交的数据创建一个新任务 |
PUT | http://localhost:8080/Task/rest/tasks/1< /td> | 使用数据请求更新 ID 为 1 的指定任务 |
DELETE | http://localhost:8080/Task/rest/tasks /1 | 删除 ID 为 1 的任务 |