REST 是 Roy Thomas Fielding 在他 2000 年的博 土论文(http://bit.ly/28R W8yv )中提出的. Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer (常 见的翻译是“表现层状态转化”)的缩写。
REST其实省略了主语:资源,表现层实际上指的是资源的表现层。资源是指Web上一切可识别、可命名、可找到并被处理的实体。比如HTML页面、音频文件、图片等。用一个URI (统一资源定位符)指向资源,使用HTTP请求方法操作资源。URI可进一步划分为统一资 源名(URN,代表资源的名字)和统一资源定位符(URL,代表资源的地址),其中URL可以 定位HTTP网址、FTP服务器和文件路径等.符合绝大多数场景,所以一般都可以用URL 替代URI
REST架构风格最重要的架构约束有如下5个.
1. 客户端-服务器端,这种Client/Server的架构形式提供了基本的分布式,客户端发起请求,服务端决定响应或者拒绝请求.如果出错则返回错误信息.由客户端处理异常
2. 无状态,通信的会话状态应该全部由客户端负责维护.也就是请求中包含了全部必 要的信息。如果使用基于服务器端的会话,要么需要保证指定会话会使用同一个服务器响应所有请求.要么得创建一个可供所有服务器访问的公用的会话存储区.对每个请求都额外访问这个集中式的数据存储区获得会话状态
3. 缓存。无状态就表示可能出现重复的请求.事实上这些请求只需要第一次真正的执行,其余的请求都可以享用这个已完成的结果而直接响应,所以缓存可以抵消一部分无状态带来的影响
4. 统一接口。统一接口意味着毎个REST应用都共享一种通用架构.那些熟悉这种架 构的人一眼就能看明白接口的意义.并会继续延承下去。
5. 分层系统。将系统划分为几个部分,每个部分负责一部分相对单一的职责.然后通过上层对下层的依赖和调用组成一个完整的系统,通常可以划分为如下三层
•应用层:负责返回JSON数据和其他业务逻辑。
•服务层:为应用层提供服务支持,如全站的账号系统、以及某些实现的文件件托管服务等。
•数据访问层:提供数据访问和存储的服务。如数据库、缓存系统、文件系统、搜索引擎等。