REST 初识
十月 20, 2008 in Oracle 融合中间件
现在满世界的Web应用都在宣称自己已经RESTful了,目前三种主流的Web服务实现方案中,由于REST模式的Web服务比起SOAP和XML-RPC的服务有着明显的简洁,而导致越来越多的Web服务开始采用REST风格设计和实现,例如Amazon,Google和Yahoo都提供了REST风格的Web查询服务;Google的也推出了Ajax应用下的REST风格搜索API。
同时也出现了一些优秀的REST 网络架构实现,如Java版的 Restlet;JCP也制定了关于REST网络服务的规范标准:JAX-RS: Java API for RESTful Web Services (JSR 311)
REST简介
REST (Representational State Transfer) 表述性状态转移
REST是由Roy Thomas Fielding博士在2000年的博士论文中首次提出的,REST被定义为是一种网络应用的架构风格(architecture style)而不是一个标准,它包括架构元素(element)和架构约束(constraint),REST通常基于使用HTTP,URI,和XML以及HTML这些现有的协议和标准。
REST从资源的角度来审视这个网络,分布在各处的资源有URI来确定,客户端的应用通过URI来获取资源的,获取这些资源致使这些应用程序转变其状态,随着不断的获取资源,客户端应用不断地在转变状态,即所谓的表述性状态转移(Representational State Transfer)
REST的设计概念和准则
- 网络上的所有事物都被抽象为资源(resource)
- 每个资源对应一个唯一的资源标识(resource identifier)
- 对资源的操作包括获取、创建、修改和删除资源,这些操作对应HTTP协议的GET, POST, PUT和DELETE方法
- 通过通用的连接器接口(generic connector interface)对资源进行操作
- 对资源的各种操作不会改变资源标识
- 所有的操作都是无状态的(stateless)
- 资源的表现形式为XML或HTML,它取决于读者是机器还是人,消费web服务的客户应用是web浏览器或者其它
- 客户端和服务器结构
- 能够利用Cache机制
- 层次化的系统
- Code on Demand – Javascript
REST的优点
- 可以利用Cache来提高响应速度
- 通讯本身的无状态可以让不同的服务器处理一系列请求中的不同请求,提高服务器的扩展性
- 浏览器即可作为客户端,简化客户端软件系统的要求
- REST直接基于现有流行的协议和标准,依赖性更小
- 不需要而外的资源发现机制
参考资料
Roy Thomas Fielding博士论文英文版链接
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
JSR-000311 JAX-RS: The JavaTM API for RESTful Web Services
http://jcp.org/aboutJava/communityprocess/final/jsr311/index.html
Restlet
Google Ajax Search API
http://code.google.com/apis/ajaxsearch/
后续
前面通过发布一个PL/SQL 的功能为一个Web Service展示了基于SOAP的Web服务实现,后续将基于Restlet来实现一个RESTful的Web服务。
–
相关文章: