侧边栏壁纸
博主头像
峰峰火火

一条咸鱼罢了

  • 累计撰写 122 篇文章
  • 累计创建 89 个标签
  • 累计收到 59 条评论

目 录CONTENT

文章目录

RestFul API规范

峰峰火火
2021-01-21 / 0 评论 / 0 点赞 / 291 阅读 / 1,755 字 / 正在检测是否收录...
温馨提示:
若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

2021/01/21
学习一下后端API设计规范

重要概念

何为REST,即REpresentational State Transfer 表现层状态转化

实际全称是Resource Representational State Transfer
,资源在网络传输中以某种表现形式进行状态转移

资源

真实对象数据,比如班级classes是代表一个集合形式的资源,特定的class代表单个个体资源;每一个资源都对应一个uri,如果需要获取这个资源,直接访问uri就可以了;例:获取特定班级:/class/27;资源也可以包含子资源,例:/classes/27/teachers:获得27班所有教师信息。

表现形式

资源是一个实体,而它有很多种表现形式,例:json,xml,image,txt。

状态转移

描述服务端资源的状态,比如通过增删查改(http动词实现)引起资源状态改变。

REST接口规范

动作

  • GET:请求从服务端获取特定资源。例子:GET /classes (获取所有班级)
  • POST:在服务器上创建一个资源。例子:POST /classes/12(创建12班)
  • PUT:更新服务器上的资源。例子:PUT /classes/12(更新12班信息)
  • DELETE:从服务器上删除特定资源。例子:DELETE /classes/12(删除12班信息)
  • PATCH:更新服务器上的资源(客户端提供更改的属性,可以看做作是部分更新),使用的比较少。

路径(接口命名)

常见规范:

  • 网址中不能有动词,只能有名词,API中名词也应该使用复数。资源与数据库中表对应,表是同种记录的集合。如果API调用不涉及资源,可以使用动词。
  • 不用大写字母,建议使用中杠-不使用下杠_例子:invitation-code invitation_code

例子例子

GET    /classes:列出所有班级
POST   /classes:新建一个班级
GET    /classes/classId:获取某个指定班级的信息
PUT    /classes/classId:更新某个指定班级的信息(一般倾向整体更新)
PATCH  /classes/classId:更新某个指定班级的信息(一般倾向部分更新)
DELETE /classes/classId:删除某个班级
GET    /classes/classId/teachers:列出某个指定班级的所有老师的信息
GET    /classes/classId/students:列出某个指定班级的所有学生的信息
DELETE classes/classId/teachers/ID:删除某个指定班级下的指定的老师的信息

反例(以前自己经常这样写)

/getAllclasses
/createNewclass
/deleteAllActiveclasses

提示

理清层次结构,学校-班级-学生
老师:/schools/teachers,学生:/schools/classes/students

过滤信息

查询使用特定条件,建议使用url参数形式。比如查询state状态为active并且name为guide的班级:

GET /classes?state=active&name=guide

实现分页查询

GET /classes?page=1&size=10 //指定第1页,每页10个数据

状态码

2xx:成功3xx:重定向4xx:客户端错误5xx:服务器错误
200 成功301 永久重定向400 错误请求500 服务器错误
201 创建304 资源未修改401 未授权502 网关错误
403 禁止访问504 网关超时
404 未找到
405 请求方法不对
0

评论区