简介:Apache Wink 是 Java API for RESTful Web Services (JAX-RS) 规范的一个开源实现 。了解如何使用 Apache Wink、Eclipse IDE 以及 Maven 项目管理工具开发、部署和运行 RESTful Web 服务。
Apache Wink 是一个促进创建和使用 REST Web 服务的 Apache 孵化器项目。通过 REST Web 服务,客户机和服务之间的交互局限于一组预定义的操作,客户机和服务器之间的交互的复杂性限制 为客户机和服务之间交换的资源表示。这种方法支持构建可互操作、可伸缩、可靠的、基于 REST 的分布 式超媒体系统。
常用缩略词
API: 应用程序编程接口
HTTP: 超文本传输协议
IDE: 集成开发环境
JSON: JavaScript 对象符号
REST: 具象状态传输
URI: 统一资源标识符
XML: 可扩展标记语言
本文介绍如何使用 Apache Wink、Eclipse IDE 以及 Maven 项目管理工具开发、部署和运行 RESTful Web 服务。
Web 服务的 REST 方法
设计 Web 服务的 REST 方法将客户机和服务之间的交互限制到一组创建、读取、更新和删除(CRUD) 操作。这些操作直接映射到 HTTP 方法 — 具体而言,映射到 POST、GET、 PUT 和 DELETE。尽管 RESTful 样式没有绑定到 HTTP 协议,本文假设 HTTP 用于客户机和服务之间的通信。
REST Web 服务在资源上执行 CRUD 操作。客户机使用资源状态的 REST 服务表示进行交换。这些表示 使用的数据格式在 HTTP 请求或响应的头部中指定 — XML 和 JSON 是广泛使用的格式。数据格式可能在 不同操作之间发生变化;例如,创建资源的数据格式与用于读取资源的数据格式不同。REST 服务保持资 源的状态,但 — 与 servlets 不同的是 — 不保持客户机会话信息。
REST 方法支持构建可互操作、可伸缩和可靠的基于 REST 的分布式系统。例如,GET、POST 和 DELETE 方法是等幂的,即多次执行它们与执行一次的结果相同。由于 GET 操作不会更改资源的状态,因 此 GET 请求的结果可以缓存起来以加快 “请求-响应” 循环。
JAX-RS 为基于 HTTP 协议的 RESTful Java Web 服务定义了一个 API。JAX-RS 实现包括 Apache Wink、Sun Jersey 和 JBoss RESTEasy。本文将使用 Apache Wink。
JAX-RS 利用 Java 注释的威力,使用注释来执行诸如以下的操作:
将 HTTP 方法和 URIs 绑定到 Java 类的方法
将来自 URI 或 HTTP 头部的元素作为方法参数注入
在 HTTP 消息体和 Java 类型之间来回转换
将 URI 模式绑定到 Java 类和方法 — @Path 注释
将 HTTP 操作绑定到 Java 方法 — @GET、 @POST、@PUT 和 @DELETE 注释
JAX-RS 还提供了一个框架来构建新功能。例如,对于自定义数据格式,程序员可以开发消息阅读器并 将 Java 对象编组到 HTTP 消息并从 HTTP 消息解组它们。
在本文中,您将使用 Eclipse 和 Maven 下载 Apache Wink,运行 Apache Wink 中包含的 HelloWorld 示例,然后将您自己的 REST Web 服务创建为一个 Eclipse 项目。
通过 Eclipse 获取 Apache Wink
在这个小节中,您将使用 Eclipse 以及 Maven Integration for Eclipse(称为 m2eclipse)和 Subclipse 插件来安装 Apache Wink。(M2eclipse 提供从 Eclipse 对 Maven 的访问;Subclipse 提供 对 Subversion 资源库的访问。)您还可以将 Eclipse 用作一个平台,从这个平台构建并运行 Web 服务 。