跳到主要内容

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 对应的是第二条记录。

使用 pop(1) 删除后列表只剩 ID 1 和 ID 3 的记录

4. 返回值与异常处理​

  • 删除成功后,由于记录已经不存在,函数直接 return,不返回任何数据;
  • 如果没有找到对应 ID,则抛出异常,提示学生不存在。

三、接口测试​

刷新接口文档页面,可以看到新增的红色 Delete 接口,它要求传入一个整型参数。点击 Try Out 开始测试。

测试一:删除不存在的 ID​

先传入一个不存在的 ID(例如 100),点击 Execute。返回的提示信息为「没有找到学生 ID 为 100 的学生」,说明异常处理生效。

删除 ID 100 时返回未找到学生的错误提示

测试二:删除存在的 ID​

把参数改为存在的 ID(例如 1),点击 Execute。返回码为 200,表示删除成功。响应内容为 Null——这是因为 Python 中返回空值,经过 JSON 转换后即为 Null,同样代表删除成功。也可以查看下方的 Response Body,其中没有 Data 和 Error 信息,进一步印证删除成功。

删除 ID 1 成功,返回码 200,响应内容为 Null

四、将返回码改为 204​

默认的成功状态码是 200,我们也可以显式设置为 204(成功但无内容)。在接口中设置 StatusCode 为 204 后,刷新页面重新测试:传入 ID 为 1,点击 Execute,可以看到返回码变为 204,同样表示删除成功。

设置 StatusCode 为 204 后,删除接口返回 204

五、小结​

到这里,五个接口已全部实现:

接口功能
获取所有学生信息查询列表
获取单个学生信息按 ID 查询
添加学生信息新增记录
修改学生信息更新记录
删除学生信息按 ID 删除

至此,你已经完成了接口定义、参数处理、返回数据以及在线测试,本质上写出了一个微型后端服务。不过目前还存在一些不足:数据类型没有约束,字段可以随意填写,接口文档也不够明确。后续我们会继续对这些方面进行优化,下节课再见。

课程推荐

想系统学习这门课程?

你已阅读完本文。需要更完整的知识体系,可以继续了解「FastAPI 项目实战」。

查看课程详情