REST是Fielding在他的2000的博士论文提出来的,他是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。
REST讲的是一组架构约束条件和原则,而Restful就是满足这些约束与原则的设计或者程序。Rest英文名为Representational State Tranfer 即为表现层状态转换。
所谓的表现层指的对象是资源,该资源可以是一种服务,一段文本,可以说是一个具体信息。对于每一个具体信息,可以通过一个特定的URL去获取,所以这个URL象征着该实体。而表现层就是该资源表现出来的形式,可以多种多样。
状态转化,相对网络来说,网站交互,就是很明显的状态转化的过程。客户端根据HTTP协议通过Get从服务端获取数据,并通过Post,Put,Delete提交请求更改服务端数据,这个过程就是一种很明显的转化。
综合上面的解释,我们总结一下什么是RESTful架构:
(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
REST架构风格有哪些重要的约束呢,重要的主要有6个:
(1)客户端-服务器(Client-Server):通信只能通过客户端发起请求,表现为请求-响应模式。
(2)无状态(Stateless):通信的Session State 完全由客户端负责维护。
(3)缓存(Cache):响应内容可以通过通信链的某处缓存,以改善网络效率。
(4)统一接口(Uniform Interface):通信链组件之间通过统一接口互相通信,以提高交互的可见性。
(5)分层系统(Layered System):将系统架构或者功能分成很多小模块,小组件,每个组件只能与相邻的组件进行交互。
(6)按需代码(Code-On-Demand):支持通过下载并执行一些代码,对客户端功能进行扩展。
来源: