关于REST
一.关键原则:
-
将所有“事物”定义ID
-
将所有事物链接在一起
-
使用标准方法
-
资源多重表述
-
无状态通信
二.对各原则的解释:
1.将所有“事物”定义ID:
在web中代表ID的统一概念是URI
。使用URI标识关键资源意味着它们获得了一个唯一、全局的ID。
可以想象在淘宝中,每一个商品都有一个唯一的链接
,这些链接就可以唯一的标识这件商品。
形如/catalog/books/bestsellers
就是一个典型的URI。
2.将所有事物链接在一起
使用URI的好处在于,链接可以指向不同的应用、不同的服务器,甚至是与自己本身的应用毫不相关的其它资源,这是因为URI是全球标准。
这样的话,就可以将所有的资源都链接在一起。
3.使用标准方法
为了使客户端程序能与资源相互协作,应当使用默认的应用协议(HTTP),也就是使用标准的GET
、PUT
、POST
、DELETE
方法。
举个例子,curl、wget、代理、缓存、HTTP服务器、网关等就是一些通用客户程序,就是利用统一接口,这样自己编写的应用就都可以与其交互。
4.资源多重表述
举个例子,如果为自己的资源提供HTML和XML两种表述方式,那么这些资源不仅仅可以被自己的客户端应用解析,同样可以被任意标准web浏览器所使用。
针对不同的需求,提供资源多重表述。
5.无状态通信
无状态通信的含义用下图解释:
Title:有状态通信
Client->Server: 你今天中午吃了什么?
Server->Client: 吃的大盘鸡。
Client->Server: 味道怎么样?
Server->Client: 还蛮好吃的。
Title:无状态通信
Client->Server: 你今天中午吃了什么?
Server->Client: 吃的大盘鸡。
Client->Server: 味道怎么样?
Server->Client: 你说啥?什么味道咋样??
因此为了解决这种情况,出现了cookie
!!
Title:有cookie的无状态通信
Client->Server: 你今天中午吃了什么?
Server->Client: 吃的大盘鸡。
Client->Server: 你今天中午吃的大盘鸡味道怎么样?
Server->Client: 还蛮好吃的。
但是不能无止境的使用,因为这会严重影响Server端的内存。