“REST风格强调,通过有限的操作或者是“动词”以及一个组件之间的标准接口,也就是HTTP协议提供的借口,来提升客户与服务之间的交互。通过为每一个 资源分配其自己的URL,来实现灵活性,REST可以调用包含上百个URI的资源类型的客户,其中的关键是REST能够给你无限多的“名词”。REST使 用HTTP的动词——简单的良定义操作集:POST, GET, PUT,DELETE进行请求和响应,从而避免了歧义。举个例子,GET只能够简单地返回资源的表现形式,而不能够创建任何其他的内容”
”REST与RPC风格之比较
远程过程调用的架构,是应用在基于XML-RPC或者 RPC风格的SOAP的Web服务中的,它却有着完全不同的风格。客户端发出命令,以使服务做出特定的操作。换句话说,RPC有动词的倾向。
REST强调资源(名词)有统一的接口以此来对它们寻址,而RPC强调过程(动词)有统一的接口来激发它们。一个基于RPC的架构,动词数量是 没有限制的。REST说,我们使用四个动词——非常熟悉,HTTP标准的GET、POST、PUT以及DELETE——来进行请求和响应,REST使用资 源寻址来处理其可变性。“
我接触REST是从关注Rail 1.2开始的,DHH在ROR 06大会上讲了Rails 1.2的展望,其中就提到了REST,当时认为REST只是一种更加易用的WEB调用技术。经过一段时间的沉淀,特别是看了RIA+REST如何来化解Java的劣势之后突然恍悟。终于理解了REST的含义,为什么要RESTful。
REST是面向资源的。是以资源为中心的软件构建风格,这和以前是不同的,相对WebService等技术,这些技术实际上把整个架构作为一个整体来考虑的,WS知识其他架构方面的延伸。而REST不是的,REST是以资源为中心的,也就是我REST服务架构时只考虑我有哪些资源,以及提供这些资源的哪些操作(局限在PGPD(Post Get Put Delete)中),根本不考虑外部的调用,这其实也是最大程度的解耦了客户端和服务器端的关系。
其实这也是SOA追求的目标,我觉着SOA中的S应该是REST来实现,或者就叫做ROA:)
所以说REST带来的是一种新的架构设计风格,一种不同的软件架构设计视角。
REST与SOAP之比较——REST篇
学习REST
从分布式系统的角度看REST
RIA+REST如何来化解Java的劣势