hooyantsing's Blog

青铜篇_P8_RESTful风格API与HTTP协议

字数统计: 588阅读时长: 2 min
2020/07/13

RESTful风格API与HTTP协议

20年全新-Spring Boot 2.x从青铜到王者之青铜篇-打造精品中的精品-程序员-编程-架构师-SpringBoot

  • API(Application Programming Interface),顾名思义:是一组编程接口规范,客户端与服务端通过请求响应进行数据通信。
  • REST(Representational State Transfer)表属性状态传递,决定了接口的形式与规则。
  • RESTful是基于http方法的API设计风格,而不是一种新技术。

    看 http method 就知道针对资源干什么

RESTful是面向资源的(名词)

|GET /api/getDogs/{id}|GET /api/dogs/{id} |获取一个小狗狗|
|GET /api/getDogs |GET /api/dogs |获取所有小狗狗|
|GET /api/addDogs |POST /api/dogs |添加一个小狗狗|
|GET /api/editDogs |PUT /api/dogs/{id} |修改一个小狗狗|
|GET /api/deleteDogs |DELETE /api/dogs/{id}|删除一个小狗狗|

RESTful 要点:

  1. 接口名均是名词,不含动词。

  2. 均使用复数形式。

  3. 用HTTP方法体现对资源的操作: * Create 增 POST

    • Read 查 GET
    • Update 改 PUT
    • Delete 删 DELETE

    6ad7bae05e0e95432ef933cb862f33f4.png

看 Url 就知道要什么资源

复杂资源关系的表达

  • GET /cars/711/drivers/ 返回 使用过编号711汽车的所有司机
  • GET /cars/711/drivers/4 返回 使用过编号711汽车的4号司机

    资源过滤、排序、选择和分页的表述

|资源数据过滤 |GET /cars?color=red |获取红色的汽车 |
| |GET /cars?seats<=4 |获取小于四座的汽车 |
|资源数据排序 |GET /cars?sort=-manufactorer,+model |获取汽车资源数据,先按照生产者降序排序、再按照车架模型升序排序 |
|资源数据字段选择|GET /cars?fields=manufacturer,model,id,color|只获取其中的一些字段,给API消费者一个选择字段的能力,这会降低网络流量|
|资源数据分页 |GET /cars?offset=10&limit=5 |使用limit和offset实现分页,缺省 |

看 http status code 就知道结果如何

|200|OK |正常 |
|400|Bad Request |浏览器错误 |
|500|Internal Server Error|服务器内部错误|

版本化你的API

面向扩展开放,面向修改关闭

强制性增加API版本声明,不要发布无版本的API。

例如:/api/v1/blog

CATALOG
  1. 1. RESTful风格API与HTTP协议
    1. 1.1. 看 http method 就知道针对资源干什么
    2. 1.2. 看 Url 就知道要什么资源
      1. 1.2.1. 复杂资源关系的表达
      2. 1.2.2. 资源过滤、排序、选择和分页的表述
    3. 1.3. 看 http status code 就知道结果如何
    4. 1.4. 版本化你的API