您的位置:首页 > 其它

REST 的知识 【转载】

2009-06-12 01:04 155 查看
该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明!

陈希章

原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/04/24/1442553.html

原文标题:REST 的知识 【转载】

原文发表:2009/4/23 22:08:00

本文转载自 http://zh.wikipedia.org/wiki/REST
表象化状态转变(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。 目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAPXML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。  

宗旨

REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表形。获得这些表形致使这些应用程序转变了其状态。随着不断获取资源的表形,客户端应用不断地在转变着其状态,所谓表形化的状态转变(Representational State Transfer)。 这一观点不是凭空臆造的,而是通过观察当前Web互联网的运作方式而抽象出来的。Roy Fielding 认为, “
设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。

[编辑]要点及标准

需要注意的是,REST是一种设计风格而不是一个标准。REST通常基于使用HTTPURI,和XML以及HTML这些现有的广泛流行的协议和标准。

[b]资源是由URI来指定。

[/b]

对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。

通过操作资源的表形来操作资源。

[b]资源的表现形式则是XML或者HTML,取决于是读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式

[/b]
[编辑]REST的要求

客户端和服务器结构

连接协议具有无状态性

能够利用Cache机制增进性能

层次化的系统

Code On Demand - Javascript

[编辑]关于状态 应该注意区别应用的状态和连接协议的状态。REST对于连接的无状态性实际上要求每次经过无状态的连接协议传送的信息必须包含应用中所有的状态信息。

[编辑]实现举例

例如,一个简单的网络商店应用, 列举所有商品,
GET http://www.store.com/products

具体某一件商品,
GET http://www.store.com/product/12345

下单购买,
POST http://www.store.com/order, 
...


[编辑]REST的优点

可以利用缓存Cache来提高响应速度

通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性

浏览器即可作为客户端,简化软件需求

相对与其他叠加在HTTP协议之上的机制,REST的软件依赖性更小

不需要额外的资源发现机制

在软件技术演进中的长期的兼容性更好

[编辑]实现

Ruby on Rails1.2以后的版本支持REST model
作者:陈希章

出处:http://blog.csdn.net/chen_xizhang

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: