FastAPI 实战:实现删除学生信息接口
前面我们已经完成了学生信息的查询、新增和修改接口,这篇文章来实现最后一个接口——删除学生信息。删除接口的逻辑并不复杂:根据传入的学生 ID 找到对应记录,从列表中移除即可。下面按「目标 → 代码实现 → 测试 → 结果 → 小结」的链路完整走一遍。
一、接口目标
删除接口的设计要点如下:
- 通过学生 ID(整型)定位要删除的记录;
- 删除成功后返回 200 状态码(也可以使用 204,表示成功但无响应内容);
- 如果传入的 ID 不存在,则返回 404 并抛出异常提示。
二、代码实现
1. 定义路由与方法
复制一份已有的接口定义,把请求方法改为 Delete,并定义处理函数 DeleteStudent,接收一个整型的 StudentID 参数。
2. 遍历假数据并定位记录
在函数内部遍历 FakeStudentDB 这个假数据列表,使用 range 遍历的同时获取当前记录的索引,再判断每条学生信息中的 ID 字段是否等于传入的 StudentID。
3. 使用 Pop 按索引删除
定位到记录后,调用列表的 Pop 方法按索引删除该条学生信息。这里要特别注意:索引从 0 开始计数。
为了直观理解,可以先在交互环境中演示一下:
FakeStudentDB.pop(1)
print(FakeStudentDB)
执行后会发现,被删除的是第二条记录(ID 等于 2 的那条),列表中只剩下 ID 为 1 和 ID 为 3 的数据。这正是因为索引 1 对应的是第二条记录。
4. 返回值与异常处理
- 删除成功后,由于记录已经不存在,函数直接 return,不返回任何数据;
- 如果没有找到对应 ID,则抛出异常,提示学生不存在。
三、接口测试
刷新接口文档页面,可以看到新增的红色 Delete 接口,它要求传入一个整型参数。点击 Try Out 开始测试。
测试一:删除不存在的 ID
先传入一个不存在的 ID(例如 100),点击 Execute。返回的提示信息为「没有找到学生 ID 为 100 的学生」,说明异常处理生效。
测试二:删除存在的 ID
把参数改为存在的 ID(例如 1),点击 Execute。返回码为 200,表示删除成功。响应内容为 Null——这是因为 Python 中返回空值,经过 JSON 转换后即为 Null,同样代表删除成功。也可以查看下方的 Response Body,其中没有 Data 和 Error 信息,进一步印证删除成功。
四、将返回码改为 204
默认的成功状态码是 200,我们也可以显式设置为 204(成功但无内容)。在接口中设置 StatusCode 为 204 后,刷新页面重新测试:传入 ID 为 1,点击 Execute,可以看到返回码变为 204,同样表示删除成功。
五、小结
到这里,五个接口已全部实现:
| 接口 | 功能 |
|---|---|
| 获取所有学生信息 | 查询列表 |
| 获取单个学生信息 | 按 ID 查询 |
| 添加学生信息 | 新增记录 |
| 修改学生信息 | 更新记录 |
| 删除学生信息 | 按 ID 删除 |
至此,你已经完成了接口定义、参数处理、返回数据以及在线测试,本质上写出了一个微型后端服务。不过目前还存在一些不足:数据类型没有约束,字段可以随意填写,接口文档也不够明确。后续我们会继续对这些方面进行优化,下节课再见。
想系统学习这门课程?
你已阅读完本文。需要更完整的知识体系,可以继续了解「FastAPI 项目实战」。
查看课程详情