什么是RESTful架构

用 URL 定位资源,用 HTTP 动词描述操作

  1. 每一个URI代表一种资源;

  2. 客户端和服务器之间,传递这种资源的某种表现层;

  3. 客户端通过五个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

    HTTP协议里面,五个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源(全部更新),PATCH用来更新资源的部分信息,DELETE用来删除资源。

  4. 接口路由设计案例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
- GET /zoos:列出所有动物园
- POST /zoos:新建一个动物园
- GET /zoos/ID:获取某个指定动物园的信息
- PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
- PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
- DELETE /zoos/ID:删除某个动物园
- GET /zoos/ID/animals:列出某个指定动物园的所有动物
- DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物
5. 接口返回结果
- GET /collection:返回资源对象的列表(数组)
- GET /collection/resource:返回单个资源对象
- POST /collection:返回新生成的资源对象
- PUT /collection/resource:返回完整的资源对象
- PATCH /collection/resource:返回完整的资源对象
- DELETE /collection/resource:返回一个空文档

RESTful架构有一些典型的设计误区

  1. 最常见的一种设计错误,就是URI包含动词,因为"资源"表示一种实体,所以应该是名词,URI不应该有动词,动词应该放在HTTP协议中。

  2. 另一个设计误区,就是在URI中加入版本号

    参考文章

Other

  1. RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。【可规范路由的定义和接口的命令】

    参考文章

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

注意事项

  1. 在 postman 上:http 协议 put 和 patch 只能使用 x-www-form-urlencoded 传输方式传输数据。

    http 默认情况下就是使用 x-www-form-urlencoded ,需要上传二进制数据的时候需要使用 post 并使用 form-data