Board logo

标题: 构建 Apache Wink REST 服务(1)简介 [打印本页]

作者: look_w    时间: 2018-9-7 20:22     标题: 构建 Apache Wink REST 服务(1)简介

本文讨论 Apache Wink 1.0 框架的架构,解释一个示例 Apache Wink RESTful 服务的设计、实现和部署。本文还帮助您了解 REST 范型的基本知识,解释新的 JAX-RS 1.0 标准,从而帮助 Java 开发人员使用注释实现 RESTful Web 服务。       
常用缩写词
REST 概述首先简要介绍一下 REST。REST 代表 Representational State Transfer,它是 World Wide Web 所依赖的一套架构原则。Roy Fielding 在他的博士论文 “Architectural Styles and the Design of Network-based Software Architectures” 中首次提出了这个概念。在他的论文中,Fielding 明确指出 REST 和 World Wide Web 的五个架构原则:               
JAX-RSWeb 上的 REST以下站点当前正在使用 REST:

为什么需要另一个 Java 标准?定义 JAX-RS 这个新规范是为了简化基于 REST 的 Java 开发。它主要关注使用 Java 注释和普通旧式 Java 对象 (POJO) 实现 RESTful 服务。尽管总是可以使用 servlet 实现 RESTful 服务,但是以这种方式实现业务逻辑需要太多 HTTP GET 请求。               
JAX-RS 隐藏所有 HTTP 并把 servlet 绑定到 Java 类中的各个方法。注释还可以动态地提取 HTTP 请求中的信息,以及把应用程序生成的异常映射到 HTTP 响应码。由于这些原因,JAX-RS 是一种实现 RESTful Java Web 服务的有效方法。               
Apache Wink 和 REST我已经介绍了 REST 和 JAX-RS,现在开始讨论 Apache Wink。Apache Wink 1.0 是一个从头设计的完全兼容的 JAX-RS 1.0 规范实现。它很容易使用和应用于生产环境,它提供的特性可以增强核心 JAX-RS 规范。               
Apache Wink 运行时架构是 JAX-RS 1.0 规范的简单实现。Apache Wink 部署在 Java Platform, Enterprise Edition (Java EE) 环境中,由以下三个组件组成:               
整个请求周期被称为 Apache Wink 逻辑流,见 。               
图 1. Apache Wink 逻辑流Apache Wink 不但帮助实现 RESTful Web 服务,而且提供一个强大的客户机库,可以使用它轻松地消费 RESTful 服务。最后,Apache Wink 附带一组内置的提供者,它们帮助开发人员支持多种行业标准的数据格式:XML、Atom、RSS、JSON、CSV 和 HTML。               
RESTful 设计现在该实践一下了。为了保持趣味性,我们要在 Apache Wink 1.0 上设计、实现和部署一个不太简单的 RESTful 服务。这个服务是 PayPal Payflow 支付网关服务的 RESTful 包装器,它可以通过 Internet 进行信用卡处理。但是,对于这个示例,我们只关注它的交易查询功能。只要提供一个属于经过身份验证的用户的惟一 ID,这个功能可以查询任何交易的状态。               
资源/URI 设计 首先定义服务的接口模型并给它分配 URI,这使服务成为 REST 中的资源。因为这个服务的功能是提供交易状态,可以公开  所示的 URI。               
清单 1. 交易服务的 URI 模式
1
2
/transactions
/transactions{id}




/transactions URI 表示系统中的所有交易。使用 /transactions{id} 查询某一交易的状态。{id} 代表对应于交易模型的交易 ID 的惟一字母数字值。另外,使用  中的模式验证用户的身份,其中的 UNAME、VNAME、PNAME 和 PWD 是在注册时分配给商人的 Payflow 网关登录凭证的组成部分。               
清单 2. 在查询字符串中包含用户凭证的 URI 模式
1
/transactions{id}?user=UNAME&vendor=VNAME&partner=PNAME&pwd=PWD






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0