愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

理解和学习RESTful

REST是什么

REST一词,是由HTTP协议的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席罗伊·托马斯·菲尔丁(Roy Thoms Fielding)于2003年在他的博士论文中所提出的。REST一词,全称为Representational State Transfer,翻译过来,就是表现层状态转化,是目前所流行的一种互联网软件架构。如果一个架构符合REST原则,那么它就是RSETful架构


由名称理解REST

REST的名称“表现层状态转化”中,省略了主语。表现层,实则上指的是“资源(Resource)”的表现层

1、什么是资源?

资源,对应的就是网络上的一个实体。网络上常见的一段文字、一张图片、一段音频、一个视频等,都可以称之为资源,而这个资源,可以使用URI(Uniform Resources Identifier)来唯一确认,我们要获取这个资源,只要访问它的URI便可。

2、表现层

表现层,指的就是资源所具体呈现出来的形式。比如文本可以用txt格式表示,也可以用HTMLJSON等来表示。我们都知道,URI只能表示资源位于哪里,却不能表示资源的形式。我们可以见到有些网址最后是以.html结尾的,但是这其实是不必要的,因为严格而言,.html指出了文本的表现形式(是HTML格式),但URI的作用应该只代表资源的位置,而它的具体表现形式,应该由HTTP Request Header中指定(如Content-Type

3、状态转换

HTTP是无状态的协议,这意味着所有的状态都由服务器进行保存。如果客户端想要和服务器交互,就需要通过某种手段,让服务器发生状态转换。而这种状态又是建立在表现层之上的,所以就称为表现层状态转化了。而客户端所采取的手段,只能是HTTP协议,我们都知道,HTTP协议的HTTP Request报文,是以动作开始的(GET、POST、PUT、DELETE),而这四个动作,可以分别对应对表现层的四个基本操作:GET获取资源、POST新建资源(或者更新资源)、PUT更新资源、DELETE删除资源


综述

总结而言,RESTful架构,应该满足以下的基本特征:
(1)每个URI代表一种资源
(2)客户端和服务端之间,传递这种资源的某种表现层(比如服务器输出JSON,客户端获取JSON)
(3)客户端通过GET/POST/PUT/DELETE,对服务器资源操作,实现表现层状态转换
(4)客户端的动作是动词,URI不应该再包含动词,而是使用名词描述



参考资料

阮一峰:理解RESTful架构