Representational State Transfer

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通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。
资源是由URI来指定。
对资源的操作包括获取、修改、创建和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
通过操作资源的表现形式来操作资源。
资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。
[编辑]REST的要求
客户端和服务器结构
连接协议具有无状态性
能够利用Cache机制增进性能
层次化的系统
随需代码 - Javascript (可选)
[编辑]关于状态
应该注意区别应用的状态和连接协议的状态。REST对于连接的无状态性实际上要求每次经过无状态的连接协议传送的信息必须包含应用中所有的状态信息。
[编辑]RESTful Web 服务
RESTful Web 服务(也称为 RESTful Web API)是一个使用HTTP并遵循REST原则的Web服务。它从以下三个方面资源进行定义:
URI,比如:http://example.com/resources/。
Web服务接受与返回的互联网媒体类型,比如:JSON,XML ,YAML 等。
Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。
该表列出了在实现RESTful Web 服务时HTTP请求方法的典型用途。
---------------------
representational state transfer (REST)
为什么要研究REST:
web服务标准受到复杂性的威胁,REST似乎可以解决问题。Web 服务的核心抽象是远程过程调用。REST 的核心抽象是远程资源而不是远程过程调用。 REST是Web协议HTTP、URI背后的设计原理,只是直到2000年才被Roy Fielding在博士论文中正式命名提出来。Fielding 断言,使用且符合 REST 设计约束的 Web 上部署的组件可以充分利用 Web 的有用特性。他还警告说,违背 REST 准则的 Web 组件都将无法利用这些优点。
但是在Ajax出现以前,浏览器的功能相对比较弱,只能实现一些瘦客户端的功能,因此,Web应用的开发者们只能把功能的实现尽量向服务器端移,这样产生了现在被广泛使用的WebMVC架构模式。这样做,其实有很多地方已经违反了REST的架构约束,但在当时是没有办法的Ajax出现后,浏览器的能力大大增强了,这时依靠Ajax的能力真的有可能完全遵从REST的架构约束了,这就需要把许多功能前移,建造更强大的客户端了。这也许就是为什么REST会随着Ajax的出现而渐渐流行开来的原因,当然,Rails DHH的大力推广也有功不可没。 

因此,基于以上原因,我感觉我们Web开发人员被推到了需要选择的十字路口,是留守传统模式,还是开始实践新的模式?传统模式已经有了这么多年的投入,各方面都已经比较成熟了,开发效率已经到了一个比较高的水平;而BC/S模式给人的感觉是更自然,更清晰一些,但在上面积累的开发经验还不够,需要大胆地开疆拓域。 事,REST对客户端有更强的能力要求,REST的思想在当时也不为人知。 
为什么是REST on rails:
服务端准备采用能支持REST的几种框架:Rails、Restlet、Django 
因为成熟度与开发效率,先从Rails开始,但要裁剪掉它的View层。 
至于工具嘛,推荐两本书吧:《RESTful Web Services》和《Ajax设计模式》
前一本相当于REST的圣经,同时也讲了很多Rails的实践; 
后一本是Ajax的百科全书,讲了多达70种的Ajax模式。 
运行的时候主要是客户端来控制程序的流程,只要运用Ajax那些模式就可以了。 
起步要做的还是学习加实践啊!先把界面做出来吧,遵从敏捷原则,让它尽快能跑起来, 
然后再慢慢重构。


-----
转载来自:

fsjoy1983 的BLOG

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值