对RESTful_API的理解

Posted by Liao on 2020-06-04

RESTful API的理解

REST表示Representational State Transfer(表现状态转移),是一种设计风格,加ful转成形容词,以形容这种设计规范的API,故为RESTful API

1.资源与URI

任何事物都是资源,要想事物被唯一识别,在web中设置了URI。URI既可以看成是资源的地址,也可以看成是资源的名称。在实际开发中,资源可理解为数据库中的数据。

URI的设计特点:

  • 通过-_让URI可读性更好(以前web的URI只是一串数字或字符串)
  • 使用/表示资源的层级关系(博客文章分类/algorithm/2020/06)
  • ,;表示同级关系
  • 使用?过滤资源 如果返回的数据很多,则API要提供参数,过滤返回结果(?limit=10 指定返回记录的数量)

2. 统一资源接口

RESTful架构应遵循接口统一原则,即无论是什么资源,都用相同的接口进行访问。接口的统一标准应该遵循HTTP方法的语义(GET,POST,PUT,DELETE)。

对资源进的操作就是CRUD,对应URI操作就是GET、POST、PUT、DELETE

因此,RESTful采用HTTP方法对资源操作,URI就表示资源的名称,而不应该包含对资源的操作。由此得出为什么URI(资源)不应该用动作描述。

1
2
3
4
5
6
7
8
9
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
-------------------
不常用:
HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

RESTful风格设计的URI:

  • 获得资料GET /data
  • 新增资料POST /data
  • 删除资料DELETE /data/1

用唯一的URL定位资源,把动作藏在HTTP的方法中,不需要暴露出来。

这样设计的优点

  1. 统一的API接口(有唯一的URL表示资源位置)

  2. 无状态

    RESTful的无状态,也就是体现了HTTP的无状态特性。如果能通过输入一个URL就能获得指定的页面(已登录),这种就是无状态

3. 资源的表述

上述通过HTTP的方法让客户端获取到资源的表述,就是服务器返回的数据格式,如JSON(推荐)、XML(避免)

4. 资源的链接

当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念:把一个个把资源链接起来

5.状态的转移

其实就是阐述REST无状态通信原则,指服务端不应该保存客户端状态。

https://medium.com/itsems-frontend/api-%E6%98%AF%E4%BB%80%E9%BA%BC-restful-api-%E5%8F%88%E6%98%AF%E4%BB%80%E9%BA%BC-a001a85ab638