python学习之REST概念

REST基础概念理解

Posted by YangSijie on June 11, 2018

关于REST

一.关键原则:

  • 将所有“事物”定义ID

  • 将所有事物链接在一起

  • 使用标准方法

  • 资源多重表述

  • 无状态通信

二.对各原则的解释:

1.将所有“事物”定义ID:

在web中代表ID的统一概念是URI。使用URI标识关键资源意味着它们获得了一个唯一、全局的ID。

可以想象在淘宝中,每一个商品都有一个唯一的链接,这些链接就可以唯一的标识这件商品。

形如/catalog/books/bestsellers就是一个典型的URI。

2.将所有事物链接在一起

使用URI的好处在于,链接可以指向不同的应用、不同的服务器,甚至是与自己本身的应用毫不相关的其它资源,这是因为URI是全球标准。

这样的话,就可以将所有的资源都链接在一起。

3.使用标准方法

为了使客户端程序能与资源相互协作,应当使用默认的应用协议(HTTP),也就是使用标准的GETPUTPOSTDELETE方法。

举个例子,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端的内存。