深入理解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实现当中,可以不考虑这个特性。
。
。
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实现当中,可以不考虑这个特性。
相关文章推荐
- 深入理解 web service 和rest web service
- 【rest】 深入理解rest
- 深入理解REST与Servlet架构的区别
- Rest API 学习笔记 --- 深入理解 Restful API 架构
- 深入理解REST(三)
- 深入探索REST(2):理解本真的REST架构风格
- 深入探索REST(2):理解本真的REST架构风格
- 深入理解REST与Servlet架构的区别
- 深入探索REST(2):理解本真的REST架构风格
- 深入理解REST(二)
- 深入理解Ehcache系列(一)
- 深入理解计算机系统——第03章——程序的机器级表示
- 深入理解C语言指针的奥秘
- 深入理解计算机系统——第10章——系统级I/O
- 理解本真的REST架构风格
- 读完了csapp(中文名:深入理解计算机系统)
- 深入理解JavaScript系列(5):强大的原型和原型链
- 深入理解JVM:HotSpot虚拟机对象探秘
- 深入理解CSS中的层叠上下文和层叠顺序
- 深入理解OnOK与OnCancel