@MicroCai
2015-03-14T19:01:01.000000Z
字数 2077
阅读 9940
计算机基础
「计算机基础」系列用以复习基础之用,文章整理自网络
RESTful 是一种软件架构风格,提供了一组设计原则和约束条件,满足这些约束条件和原则的应用程序或设计就是 RESTful。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
RESTful 全称是 Representational State Transfer,可以翻译为「表现层状态转化」,完整的表达是「资源的表现层状态转化」。
资源指代网络上的实体(Entity),如一段文本、一张图片、一首歌曲、一种服务等。可以用 URI(Universal Resource Identifier,统一资源定位符)来指向它,每个资源都有一个唯一的 URI 与之对应,所谓「上网」,就是与一系列 URI 互动的过程。若要获取资源,只要访问其 URI 即可。
表现层就是资源的表现形式,如文本是一个实体,它可以以 txt/json/xml/html/二进制 等等多种多样的形式展现出来。
状态转移(state transfer)与状态机中的状态迁移(state transition)的含义是不同的。状态转移说的是:在客户端和服务器端之间转移(transfer)表现层资源状态的表述。通过转移和操作资源的表述,来间接实现操作资源的目的。
访问网站的过程可以看做客户端和服务端的互动过程。在这过程中,势必涉及到状态和数据的变化。
互联网 HTTP 通信协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生「状态转化」(State Transfer)。而这种转化是建立在表现层之上的,所以就是「表现层状态转化」。
REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。
REST的要求
HTTP 全称 HyperText Transfer Protocol,可翻译为「超文本传输协议」,是互联网上应用最为广泛的一种网络协议。
HTTP 无状态,即不保存传输过程的状态。可以通过 Cookies 或 Sessions 来保存状态。
含状态传输的 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等) | 替换/创建 指定的资源。并将其追加到相应的资源组中。 | 把指定的资源当做一个资源组,并在其下 创建/追加 一个新的元素,使其隶属于当前资源。 | 删除 指定的元素。 |
符合 RESTful 风格的四个动词为 GET/POST/PUT/DELETE
GET 是查询操作,无副作用,所以幂等。
DELETE 是删除操作,每次副作用相同,所以幂等。
PUT 修改资源,由于请求中有 ID,即修改的是同一个资源,所以幂等。
POST 新建资源,每次都创建新资源,非幂等。