[关闭]
@MicroCai 2015-03-14T11:01:01.000000Z 字数 2077 阅读 9508

RESTful 与 HTTP

计算机基础


「计算机基础」系列用以复习基础之用,文章整理自网络


RESTful 是一种软件架构风格,提供了一组设计原则和约束条件,满足这些约束条件和原则的应用程序或设计就是 RESTful。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

理解 RESTful

RESTful 全称是 Representational State Transfer,可以翻译为「表现层状态转化」,完整的表达是「资源的表现层状态转化」。

什么是资源(Resources)

资源指代网络上的实体(Entity),如一段文本、一张图片、一首歌曲、一种服务等。可以用 URI(Universal Resource Identifier,统一资源定位符)来指向它,每个资源都有一个唯一的 URI 与之对应,所谓「上网」,就是与一系列 URI 互动的过程。若要获取资源,只要访问其 URI 即可。

什么是表现层(Representation)

表现层就是资源的表现形式,如文本是一个实体,它可以以 txt/json/xml/html/二进制 等等多种多样的形式展现出来。

什么是状态转移(State Transfer)

状态转移(state transfer)与状态机中的状态迁移(state transition)的含义是不同的。状态转移说的是:在客户端和服务器端之间转移(transfer)表现层资源状态的表述。通过转移和操作资源的表述,来间接实现操作资源的目的。

访问网站的过程可以看做客户端和服务端的互动过程。在这过程中,势必涉及到状态和数据的变化。

互联网 HTTP 通信协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生「状态转化」(State Transfer)。而这种转化是建立在表现层之上的,所以就是「表现层状态转化」。

RESTful 的要求

REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。

REST的要求

HTTP

HTTP 全称 HyperText Transfer Protocol,可翻译为「超文本传输协议」,是互联网上应用最为广泛的一种网络协议。

HTTP 无状态,即不保存传输过程的状态。可以通过 Cookies 或 Sessions 来保存状态。

含状态传输的 Web 服务

含状态传输的 Web 服务(也称为 RESTful Web API)是一个使用 HTTP 并遵循 REST 原则的 Web 服务。它从以下三个方面资源进行定义:

下表列出了在实现「含状态传输的 Web 服务」时HTTP请求方法的典型用途。

资源 GET 查询 PUT 新建/修改 POST 新建 DELETE 删除
一组资源的 URI,比如 http://example.com/resources/ 列出 URI,以及该资源组中每个资源的详细信息(后者可选)。 使用给定的一组资源 替换 当前整组资源。 在本组资源中 创建/追加 一个新的资源。该操作往往返回新资源的 URL。 删除 整组资源。
单个资源的 URI,比如 http://example.com/resources/142 获取 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等) 替换/创建 指定的资源。并将其追加到相应的资源组中。 把指定的资源当做一个资源组,并在其下 创建/追加 一个新的元素,使其隶属于当前资源。 删除 指定的元素。

HTTP 四个动词的幂等性

符合 RESTful 风格的四个动词为 GET/POST/PUT/DELETE

GET 是查询操作,无副作用,所以幂等。

DELETE 是删除操作,每次副作用相同,所以幂等。

PUT 修改资源,由于请求中有 ID,即修改的是同一个资源,所以幂等。

POST 新建资源,每次都创建新资源,非幂等。

参考文档

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注