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 | GET(SELECT):从服务器取出资源(一项或多项)。 |
RESTful风格设计的URI:
- 获得资料GET /data
- 新增资料POST /data
- 删除资料DELETE /data/1
用唯一的URL定位资源,把动作藏在HTTP的方法中,不需要暴露出来。
这样设计的优点
统一的API接口(有唯一的URL表示资源位置)
无状态
RESTful的无状态,也就是体现了HTTP的无状态特性。如果能通过输入一个URL就能获得指定的页面(已登录),这种就是无状态
3. 资源的表述
上述通过HTTP的方法让客户端获取到资源的表述,就是服务器返回的数据格式,如JSON(推荐)、XML(避免)
4. 资源的链接
当你浏览Web网页时,从一个连接跳到一个页面,再从另一个连接跳到另外一个页面,就是利用了超媒体的概念:把一个个把资源链接起来
5.状态的转移
其实就是阐述REST无状态通信原则,指服务端不应该保存客户端状态。