声明
RESTful
是一种风格,而不是一种架构,更不是一种强制要求。如果一个架构符合 RESTful
的原则,那么它就可以称为 RESTful
架构。
从文字上理解RESTful
先从文字上理解,REST
全名 Representational State Transfer
中文译作 表现层状态转化
。 这里 表现层
是指 Resources 即 资源
的表现形式。
下面介绍几组理解 RESTful
所必须的几个概念:
资源
资源 就是我们印象中的资源,一张图片、一个文档、一个音频或者视频,它们都是资源,是存在于网络中的一个实体
URI
在之前我一直把 URI
和 URL
搞混:
URI
是统一资源定位符URL
是统一资源标识符
URL 更像是资源的 id,URI 不仅指定了文件,还标明了文件所处的位置,所以 URI
是 URL
的子集。
表现层
资源 是网络中的实体,但是它可以有多种表现的形式,可以简单的理解为格式的不同
例如:一个视频文件,它可以通过 mp4 的方式表现,也能通过 mkv 的方式表现
我们把 资源 的具体表现形式称作它的 表现层
例如:一个视频文件,如果是以 mp4 的方式呈现,那么称其表现层为 mp4
状态转化
与一个动态网站进行交互时,势必牵扯到数据和状态的变化
想象你在QQ上更改头像的场景:你的头像资源发生了变化 即 原来的头像被新上传的头像替代了……
在你确定更改头像的瞬间,在服务端储存的头像资源就发生了 状态转化
到底什么是RESTful?
它是一种风格,但我看来更像一种规范:
- 每一个URI代表一个资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 客户端通过HTTP的四个动词(GET、POST、PUT、DELETE)来对服务器资源进行操作实现
表现层状态转化
一言以蔽之:URI中只使用名词定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。
RESTful的优势
RESTful
最早在2000年由其提出者在论文中提出,那时的环境和现在截然不同,在当时的web还是典型的PHP或JSP架构,现在看来完全无法满足现在的 “万物互联” 模式,而RESTful
可谓是一个不错的解决方案,而今也得到了广泛应用。
通过 RESTful API
的方式,让各客户端各取所需,而不是之前那样的 “大一统”模式(即前后端一体),使得结结构更加清晰、风格更加统一。
参考
Q.E.D.