声明

RESTful 是一种风格,而不是一种架构,更不是一种强制要求。如果一个架构符合 RESTful 的原则,那么它就可以称为 RESTful 架构。

从文字上理解RESTful

先从文字上理解,REST 全名 Representational State Transfer 中文译作 表现层状态转化。 这里 表现层 是指 Resources 即 资源 的表现形式。

下面介绍几组理解 RESTful 所必须的几个概念:

资源

资源 就是我们印象中的资源,一张图片、一个文档、一个音频或者视频,它们都是资源,是存在于网络中的一个实体

URI

在之前我一直把 URIURL 搞混:

  • URI 是统一资源定位
  • URL 是统一资源标识

URL 更像是资源的 id,URI 不仅指定了文件,还标明了文件所处的位置,所以 URIURL 的子集

表现层

资源 是网络中的实体,但是它可以有多种表现的形式,可以简单的理解为格式的不同

例如:一个视频文件,它可以通过 mp4 的方式表现,也能通过 mkv 的方式表现

我们把 资源 的具体表现形式称作它的 表现层

例如:一个视频文件,如果是以 mp4 的方式呈现,那么称其表现层为 mp4

状态转化

与一个动态网站进行交互时,势必牵扯到数据和状态的变化

想象你在QQ上更改头像的场景:你的头像资源发生了变化 即 原来的头像被新上传的头像替代了……

在你确定更改头像的瞬间,在服务端储存的头像资源就发生了 状态转化

到底什么是RESTful?

它是一种风格,但我看来更像一种规范:

  1. 每一个URI代表一个资源
  2. 客户端和服务器之间,传递这种资源的某种表现层
  3. 客户端通过HTTP的四个动词(GET、POST、PUT、DELETE)来对服务器资源进行操作实现 表现层状态转化

一言以蔽之:URI中只使用名词定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

RESTful的优势

RESTful 最早在2000年由其提出者在论文中提出,那时的环境和现在截然不同,在当时的web还是典型的PHP或JSP架构,现在看来完全无法满足现在的 “万物互联” 模式,而RESTful 可谓是一个不错的解决方案,而今也得到了广泛应用。

通过 RESTful API 的方式,让各客户端各取所需,而不是之前那样的 “大一统”模式(即前后端一体),使得结结构更加清晰、风格更加统一。

参考

Q.E.D.


此 生 无 悔 恋 真 白 ,来 世 愿 入 樱 花 庄 。