Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。
降低开发的复杂性,提高系统的可伸缩性
- 资源
- 表现层
- 状态转化
资源
REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。
表现层(Representation)
URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
状态转化(State Transfer)
互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
几种误区
最常见的一种设计错误,就是URI包含动词--》 /posts/show/1,正确的写法应该是/posts/1,然后用GET方法表示show。
资源不能是动词,但是可以是一种服务
POST /accounts/1/transfer/500/to/2 --》
POST /transaction HTTP/1.1
from=1&to=2&amount=500.00
为什么在请求中传递SessionID被普遍认为是unRESTful的,而将用户的credentials包含在每个请求里又是一种非常RESTful的做法
无状态指的是任意一个Web请求必须完全与其他请求隔离,当请求端提出请求时,请求本身包含了相应端为相应这一请求所需的全部信息。
RESTful架构对于state的两个不同的解释: 应用状态(Application State)和资源状态(Resource State)。
- 应用状态:指的是与某一特定请求相关的状态信息
- 资源状态:则反映了某一存储在服务器端资源在某一时刻的特定状态,该状态不会因为用户请求而改变,任何用户在同一时刻对该资源的请求都会获得这一状态的表现(Representation)。
RESTful架构要求服务器端不保有任何与特定HTTP请求相关的资源,所以应用状态必须由请求方在请求过程中提供。
在Session ID可以被认为是一个用来标识某一会话状态的Key,将其传递给服务器端意味着这样一个请求:“请帮我取出这个状态信息”,也就是说这个请求假设响应方保有着状态信息。由于与某一特定请求相关的状态属于应用状态,而RESTful架构要求任何此类状态由请求方负责提供,所以传递Session ID被认为是unRESTful的做法。反过来,user credential作为一种应用状态,是被期望由请求方提供的,所以在请求中传递user credentials(姑且忽略安全性问题)是符合RESTful架构规范的。
参考:http://developer.51cto.com/art/200906/129424.htm
相关推荐
REST强调基于网络的分布式系统的松耦合设计,并推崇无状态通信机制。在理解REST时,应避免将其与RPC(Remote Procedure Call)简单等同,因为REST不仅仅是一系列HTTP方法的简单应用。 REST的核心理念在于资源的抽象...
《基于SpringBoot+Sureness的REST API资源无状态认证权限管理系统的深度解析》 在现代Web应用程序开发中,RESTful API已经成为服务端与客户端交互的主要方式。Spring Boot以其简洁、快速的开发特性,深受开发者喜爱...
这些服务利用HTTP协议中的标准方法来实现对资源的操作,具有无状态性,支持客户端与服务器之间的松耦合设计。 #### 二、三位SOA专家的观点 - **Jim Webber**、**Savas Parastatidis** 和 **Ian Robinson**:这三位...
4. **状态管理和超媒体**:REST强调无状态,这意味着每个请求都应包含所有必要的信息,而服务器不需要保持客户端的上下文。此外,超媒体作为应用状态的引擎(HATEOAS)是REST的一个关键特性,书里可能会解释如何使用...
《什么是REST.doc》可能会详细解释REST的基本原理和核心概念,如客户端-服务器、无状态、缓存、层式系统以及代码-on-demand(可选)等六项REST架构约束。这些约束定义了RESTful系统的交互方式,使得系统更加模块化,...
首先,理解无密码验证的核心思想是关键。它减少了用户记忆和管理多个复杂密码的负担,同时也降低了因密码泄露导致的安全风险。在Django REST框架中实现这一功能,通常会涉及到以下步骤: 1. **注册与身份验证令牌**...
本文将深入探讨如何利用Spring Boot和Sureness框架构建一个面向REST API资源的无状态认证权限管理系统。 Spring Boot是Spring框架的一个微服务开发工具,它简化了Spring应用程序的初始设置和配置,使得开发者可以...
REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,主要用于Web服务设计,它强调简洁、无状态和基于标准的接口。本压缩包包含了构建REST风格Web架构所需的jar文件,这些文件是开发...
- **无状态**: REST 服务是无状态的,即每次请求都包含所有必要的信息,服务器不会存储客户端的状态信息。 - **缓存**: REST 服务支持缓存,这有助于减少延迟并提高性能。 - **分层系统**: REST 服务可以构建在...
RESTful服务通常具有简洁、无状态和缓存等特性,使得API设计更加直观且易于理解和使用。 DataSnap是Embarcadero Delphi中的一个框架,用于构建服务器端应用程序,它提供了数据库访问、远程方法调用(RMI)以及Web服务...
2. **无状态性**:每次请求都必须包含理解请求的所有信息,服务器不可以存储会话状态。这意味着每次请求都是独立的,不依赖于前一次请求的信息。 3. **可缓存**:响应可以被缓存,这有助于提高系统的性能。 4. **...
REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,主要应用于Web服务的设计,以提供简洁、无状态、基于标准的接口。REST Web Service是遵循REST原则的Web服务,它通过HTTP协议来实现...
通过以上知识点,我们可以看出"REST架构web实例"主要是关于如何构建遵循REST原则的Web服务,包括资源管理、HTTP方法的使用、URL设计以及如何实现无状态、缓存和安全性的考虑。在"Restful1029"这个压缩包文件中,可能...
REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,使得API更易于理解和使用。在本项目中,“WCF REST Service Test”是一个用于测试WCF REST服务的应用程序,它提供...
REST(Representational State Transfer,代表性状态转移)是一种网络应用程序的设计风格和开发方式,主要用于构建Web服务。这种设计模式强调简洁、直接的交互方式,以提高效率和可扩展性。REST的核心思想是将Web...