您的位置:首页 > 理论基础 > 计算机网络

深入理解REST(一)

2008-01-25 11:53 190 查看



 

1.      什么是REST

REST是REpresentational State Transfer的缩写,来源于R. Fielding的一篇博士论文:《Architectural Styles and the Design of Network-based Software Architectures

。REST不是什么规范,而是一种架构,一种网络应用的架构。可以把REST理解成一种设计模式,就像其他设计模式一样,只不过REST这种设计模式是应用在网络应用架构上的。

 

1.1  REST的含义

为了进一步理解什么是REST,让我们看看REpresentational State Transfer这三个英文单词分别表示什么意思:

Representational

中文直译:代表的,表像的。如果把WEB服务器端中所有的东西(数据)都看作是资源(Resource),那么呈现在用户面前(客户端)的就是资源的表像(Representation)。同一个资源可能有不同表像,例如一个人作为一个Resource,那么他的表像(Representation)可以是一张图片(相片),也可以是一个XML描述的个人信息,等等。每一个资源都有自己的唯一标识(URI)。

State

中文直译:状态。这个比较难理解。首先这个状态是客户端的状态,而不是服务器端的状态(在REST中,服务器端应该是无状态的)。那么,把State和Representation联系在一起(Representational State),可以理解成:每一个资源(Resource)在客户端的表像(Representation)就是客户端的一个状态(State)。

Transfer

中文直译:转移。当用户通过不同的URI访问不同的资源时,客户端的表像(Representation)也会随着变化,也就意味着客户端的状态变更(Transfer)了,连起来就是:Representational State Transfer。

 

1.2  REST架构的特点

REST是一种架构,而不是一个规范。

REST是一种典型的Client-Server架构,但是强调瘦服务器端,服务器端只应该处理跟数据有关的操作,所有有关显示的工作都应该放在客户端。

在REST架构中,服务器是无状态的,也就是说服务器不会保存任何与客户端的会话状态信息。所有的状态信息只能放在双方沟通的Message(消息)中。

REST架构是幂等的,对于相同的请求,服务器返回的结果也是相同的,因此服务器端返回的结果是可以缓存的,既可以存在客户端也可以存在代理服务器端。

在REST架构中,所有的操作都是基于统一的方式进行的:
每个Resource都有一个唯一的标识。

通过Representation(客户端)来处理Resource(服务器端)。也就是说,客户端不能直接操作服务器端的Resource,只能通过对相应的Representation的操作,并发送相应的请求,最后由服务器端来处理Resource并返回结果。

客户端和服务器端传送的任何一个Message(消息),都应该是自描述的。也就是说处理这个Message所需要的上下文环境都应该包含在这个Message当中。

多媒体的交互系统,客户端和服务器端传送的内容可以是文档,图片,声音等等多媒体数据,这也是一个Resource能够对应不同的Representation(例如文档,图片等)的基础。

分层结构,像TCP/IP的分层结构一样,第n层使用第n-1层提供的服务并为第n+1层提供服务。在REST中,Client-Server之间加入了Proxy层和Gateway层。在这些中间层可以加入一些业务处理以外的功能,譬如:负载均衡,安全控制等等。

Code-On-Demand,客户端可以访问服务器端的Resource,但并不知道如何处理服务器端返回的结果,这个处理过程的代码应该是从服务器端发送过来,然后在客户端执行,也就是说客户端的功能是根据需要动态从服务器端获得的。一个很简单的例子,Applet就是从服务器端下载然后在客户端执行的。注意,这个特性是可选的(Optional),也就是说在你的REST实现当中,可以不考虑这个特性。

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