三个概念四个动词,理解RESTful架构
RESTful概念号称Web开发初期的最大障碍。乍一看概念,真是一头雾水。属于每个字都认识,但就是不太懂的范畴。今天理了理。
什么是RESTful
维基百科: 具象状态传输(英文:Representational State Transfer,简称REST)是Roy Thomas Fielding博士于2000年在他的博士论文 "Architectural Styles and the Design of Network-based Software Architectures" 中提出来的一种万维网软件架构风格。
额,具象?状态传输?真的不太懂,这到底是什么?
三个概念
URI
统一资源标识符(英语:Uniform Resource Identifier)。每一个URI代表一种资源,比如一段文本、一张图片、一首歌曲等等。我们所谓的"上网",其实是与互联网上一系列的"资源"互动,调用它的URI(统一资源标识符)。下图展示了两个 URI 例子及它们的组成部分。
具象
"资源"具体呈现出来的形式,就是它的"具象"(Representation)。一个资源通过不同的形式来表现,比如:一张图片,可以是JPG格式,也可以是PNG格式。
状态传输(也译作 状态转化)
阮一峰《理解RESTful架构》
访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。
发起者是谁?客户端。
谁的状态变化了?服务器端。
状态传输就是:客户端对服务器端的资源进行操作,让服务器端的资源的状态发生转化。。也可以理解成客户端把该资源状态,传给了服务器端。
四个动词
客户端对服务器端的操作,通过四个HTTP动词来实现:
-
GET: 对应read,获取资源
GET /bookstores:列出所有书店
GET /bookstores/ID:获取某个指定书店信息
GET /bookstores/ID/books:列出某个指定书店的所有书籍
GET /bookstores/ID/books/ID:列出某个指定书店的指定书籍 -
POST: 对应create, 新建资源
POST /bookstores:新建一个书店
POST /bookstores/ID/books:新建某个书店的一种书籍 -
PUT: 对应update, 更新资源
PUT /bookstores/ID:更新某个指定书店的信息(提供该书店的全部信息,包括地址、书籍等等)
PUT /bookstores/ID/books:更新某个指定书店的信息所有图书的信息
PUT /bookstores/ID/books/ID:更新某个指定书店的信息指定图书信息 -
DELETE: 对应destroy, 删除资源
DELETE /bookstores/ID:删除某个书店
DELETE /bookstores/ID/books/ID:删除某个指定书店的指定书籍
谁用它?
- Ruby on Rails1.2以后的版本支持REST model。
- JBoss RESTEasyJBoss的REST实现
- Node.js RESTful APINode.js实现RESTful API
总结
REST是设计风格,不是标准。REST通常基于使用HTTP等协议和标准。
- URI:资源是由URI来指定
- 具象:资源可以有不同的表现形式,不同的格式。
- 状态传输:客户端和服务器之间,传递这种资源的具象(种表现层),实现客户端对服务器端资源的操作。
- 具体操作包括:获取、创建、修改和删除,对应HTTP协议四个动词的GET、POST、PUT和DELETE。
OK, 以上就是我对RESTful的粗浅的理解,不对之处谢谢大家指正。
谢谢阅读。