RESTful架构理解

xiaoxiao2021-02-28  24

什么是REST?

REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。

REST是原则条件,满足REST的应用就是RESTful

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是应用程序状态的引擎,资源表示通过超链接互联。

RESTful实战

版本(Versioning),RESTful建议是将API的版本号放入URL,例如https://api.xxxxxx.com/v1/,Github采用这种做法。

路径(Endpoint),表示API的具体网址。在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的”集合”(collection),所以API中的名词也应该使用复数。

HTTP Action动作,常用的HTTP动词有下面五个(括号里是对应的SQL命令)。 GET(SELECT):从服务器取出资源(一项或多项)。 POST(CREATE):在服务器新建一个资源。 PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。 DELETE(DELETE):从服务器删除资源。 还有两个不常用的HTTP动词。 HEAD:获取资源的元数据。 OPTIONS:获取属性信息。

认证方面,API的身份认证应该尽量使用OAuth 2.0框架,基于accessToken、sessionId之类的认证

服务器返回的数据格式,应该尽量使用JSON/JSONP,避免使用XML。

例如 1. 获取id为1的用户 method:GET URL:http://127.0.0.1:8080/user/1 2. 查询id为1的用户的权限 method:GET URL:http://127.0.0.1:8080/user/1/roles 3. 创建用户(建议根据id判断,有则更新,无则插入) method:POST URL:http://127.0.0.1:8080/user Data:userId=1,userName=xxxx,passWord=xxxx 4. 更新用户(建议根据id判断,有则更新,无则插入) method:PUT URL:http://127.0.0.1:8080/user Data:userId=1,userName=xxxx,passWord=xxxx 5. 删除用户 method:DELETE URL:http://127.0.0.1:8080/user/1

转载请注明原文地址: https://www.6miu.com/read-2629461.html

最新回复(0)