声明:本人的针对Openstack开发的学习笔记,且以用为目的不是很严谨,仅用于理解,错了不负责,哈哈哈哈哈哈。
一、REST是HTTP的亲戚
大牛Roy Fielding (Apache HTTP 服务器的核心开发者,HTTP/1.1 协议专家组)提出一套框架设计了HTTP/1.1(就是HTTP协议的1.1版本),之后其博士论文完善了这个框架,得到了REST。满足REST设计原则的架构都称为RESTful架构。
不严谨的说,HTTP协议就是客户端和服务器之间的消息搬运工。HTTP说“东西给服务器A”,TCP将东西分成几个包裹递给再IP,IP协议把包裹传过去,TCP再装起来交给HTTP。
既然HTTP就是超文本传输,我觉得REST大概也就是类似一个网页地址对应资源的功能。
HTTP当然要用到网址,不准确的说是一个叫做URL的东西, 全称为“统一资源定位符(Uniform Resource Locator)。REST的全称是表述性-状态转移,其对象就是资源。
一个完整的 URL 包括:协议部分(如http)、网址(baidu.com)、文件地址部分。协议部分以//为分隔符。
二、重要的统一资源接口(API)原则
RESTful API也是依托HTTP的,下面这些都是:
[POST] http://mengkang.net/users // 新增
[GET] http://mengkang.net/users/1 // 查询
[PATCH] http://mengkang.net/users/1 // 更新
[PUT] http://mengkang.net/users/1 // 覆盖,全部更新
[DELETE] http://mengkang.net/users/1 // 删除
[POST]这些带括号的是RESTful的特色,其宗旨是一个URL就是一个资源,把对其的动作放在其中的括号里。比如一个删除功能的API,传统的设计是http://xx.net/del/id/x,而REST放到了括号里。
这就是RESTful 的原则,API包括一组受限的预定义操作,不管什么资源都用相同的接口调用。就好像不管是玩dota还是玩LOL,都统一叫 [玩游戏]。
所以REST有点像具有CURD(增、删、改、查)能力的数据库架构。当然不仅如此。
三、状态码
服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。例如:
200 OK - [GET]:服务器成功返回用户请求的数据。
201 CREATED - [POST]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队
四、Openstack的通信方式
有两种:(1)基于HTTP协议的RESTFul API方式,用于各组件之间的通信(如nova与glance 的通信)。
(2)RPC调用。同一组件中各个不同模块之间的通信,如nova组件中nova-compute与nova-scheduler的通信。RPC(Remote Procedure Call Protocol)——远程过程调用协议,就是实现远程操作。openstack里都是基于RabbitMQ(消息队列)实现的。
RESTful实现方式通常是http+JSON实现。
小结:到这明白了,老板就是想做个web界面,让用户通过浏览器交互,传点数据啥的到我们的后台程序里。也就是REST要做的事情。REST就是一个传声筒。