一、关于
2000年,Roy T. Fielding在他的博士学位论文《Architectural Styles and the Design of Network-based Software Architectures》(中文版名为《架构风格与基于网络的软件架构设计》)中,推导出来了REST这种新的架构风格。REST并不是一种具体的技术,也不是一种具体的规范,REST其实是一种内涵非常丰富的架构风格。
二、原则
1、面向资源
资源是一种看待服务器的方式,每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它可以代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西。面向资源即使用URI标识所有值得标识的事物,无论这些资源代表单一数据项、数据项集合、虚拟亦或实际的对象还是计算结果等。
2、超文本驱动
“超文本驱动”又名“将超媒体作为应用状态的引擎”(Hypermedia As The Engine Of Application State,缩写为HATEOAS)。资源之间通过超链接相互关联,超链接既代表资源之间的关系,也代表可执行的状态迁移。在超媒体之中不仅仅包含数据,还包含了状态迁移的语义,以超媒体作为引擎,驱动Web应用的状态迁移。即超媒体是链接的思想,使用链接指引可以被标识的资源。
3、统一接口
HTTP协议中定义了一个操作资源的统一接口,主要包括 GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS。REST要求,必须通过统一的接口来对资源执行各种操作,且其操作语义必须由HTTP消息体之前的部分完全表达,不能将操作语义封装在HTTP消息体内部。
4、资源多重表述
资源的表述是一段对于资源在某个特定时刻的状态的描述。可以在客户端-服务器端之间转移(交换)。资源的表述可以有多种格式,例如HTML/XML/JSON/纯文本/图片/视频/音频等等。资源多重表述即针对不同的需求提供资源多重表述。
5、无状态通信
服务器端不保持除了单次请求之外的,任何与其通信的客户端的通信状态,通信的会话状态应该全部由客户端负责维护。
三、参考
http://www.infoq.com/cn/articles/rest-introduction/
2000年,Roy T. Fielding在他的博士学位论文《Architectural Styles and the Design of Network-based Software Architectures》(中文版名为《架构风格与基于网络的软件架构设计》)中,推导出来了REST这种新的架构风格。REST并不是一种具体的技术,也不是一种具体的规范,REST其实是一种内涵非常丰富的架构风格。
二、原则
1、面向资源
资源是一种看待服务器的方式,每个资源是服务器上一个可命名的抽象概念。因为资源是一个抽象的概念,所以它可以代表服务器文件系统中的一个文件、数据库中的一张表等等具体的东西。面向资源即使用URI标识所有值得标识的事物,无论这些资源代表单一数据项、数据项集合、虚拟亦或实际的对象还是计算结果等。
2、超文本驱动
“超文本驱动”又名“将超媒体作为应用状态的引擎”(Hypermedia As The Engine Of Application State,缩写为HATEOAS)。资源之间通过超链接相互关联,超链接既代表资源之间的关系,也代表可执行的状态迁移。在超媒体之中不仅仅包含数据,还包含了状态迁移的语义,以超媒体作为引擎,驱动Web应用的状态迁移。即超媒体是链接的思想,使用链接指引可以被标识的资源。
3、统一接口
HTTP协议中定义了一个操作资源的统一接口,主要包括 GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS。REST要求,必须通过统一的接口来对资源执行各种操作,且其操作语义必须由HTTP消息体之前的部分完全表达,不能将操作语义封装在HTTP消息体内部。
4、资源多重表述
资源的表述是一段对于资源在某个特定时刻的状态的描述。可以在客户端-服务器端之间转移(交换)。资源的表述可以有多种格式,例如HTML/XML/JSON/纯文本/图片/视频/音频等等。资源多重表述即针对不同的需求提供资源多重表述。
5、无状态通信
服务器端不保持除了单次请求之外的,任何与其通信的客户端的通信状态,通信的会话状态应该全部由客户端负责维护。
三、参考
http://www.infoq.com/cn/articles/rest-introduction/