理解 RESTful API

2019-03-26  本文已影响0人  china_木木

一、名称

REST,即Representational State Transfer的缩写。直接翻译的意思是"表现层状态转化"。

2000年,Roy Thomas Fielding博士在他那篇著名的博士论文《Architectural Styles and the Design of Network-based Software Architectures》中提出了几种软件应用的架构风格,REST作为其中的一种架构风格在这篇论文的第5章中进行了概括性的介绍。

如果一个架构符合REST原则,就称它为RESTful架构。

二、资源

REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。

所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源标识符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符

互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"

三、HTTP动词

五个表示操作方式的动词:GET、POST、PUT、DELETE
客户端通过五个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

它们分别对应五种基本操作:

还有两个不常用的HTTP动词。

PUT大多时候表示更新该资源的全部信息,而PATCH则更新部分信息;
PUT和POST又一些功能的重叠,都可以是新建一个资源;

四、RESTful架构

url地址中只包含名词表示资源,使用http动词表示动作进行操作资源
举例说明:

// 获取所有扩展系统信息
GET /management/getExternalSystem      --> GET /management/ExternalSystem      获取所有扩展系统
                                       --> GET /management/ExternalSystem/1    获取指定扩展系统
POST /management/addExternalSystem     --> POST /management/ExternalSystem     创建扩展系统
POST /management/editExternalSystem    --> PUT /management/ExternalSystem      更新扩展系统 
GET /management/delExternalSystem?id=1 --> DELETE /management/ExternalSystem/1  删除扩展系统

使用统一的接口

五、REST的五大特性

如上的 api 设计中,首先如上的 url 设计中,通过授权码中获取登录用户 uid。则是有状态的了,其次因为所有的用户访问的资源都是同一个地址,这与唯一资源的概念是相违背的。如果是无状态的,那么就与唯一资源的概念相吻合了。

资源的概念是 RESTful 里面最重要的一个概念。

参考https://www.jianshu.com/p/6baf8554b3f4?from=timeline&isappinstalled=0

上一篇 下一篇

猜你喜欢

热点阅读