Appearance
Web-03 Spring Boot CRUD、事务与全局异常处理
- 分类: Web 题
- 难度: 综合
本节知识点
- RESTful 接口设计
- Controller、Service、Mapper 分层
- 统一响应结构
- 参数校验
- Spring 事务管理
- 日志
- 全局异常处理器
接口要求
在上一题的学生表和 MyBatis 基础上,实现以下接口:
| 功能 | 方法与路径 | 成功状态码 |
|---|---|---|
| 查询全部学生 | GET /api/students | 200 |
| 根据 id 查询 | GET /api/students/{id} | 200 |
| 新增学生 | POST /api/students | 201 |
| 修改学生 | PUT /api/students/{id} | 200 |
| 删除学生 | DELETE /api/students/{id} | 200 |
所有响应使用统一结构:
json
{
"code": 200,
"message": "success",
"data": {}
}响应体中的 code 与 HTTP 状态码保持一致(示例是查询或修改成功时的形态;新增成功时 code 应为 201)。
业务要求(必做)
- 学号、姓名不能为空。
- 成绩必须在 0 到 100 之间。
- 学号不能重复。
- 查询、修改或删除不存在的学生时抛出
StudentNotFoundException,统一返回 404。 - 请求参数错误统一返回 400。
- 实现全局异常处理,至少分别处理:
MethodArgumentNotValidException:返回 400。StudentNotFoundException:返回 404。
- 记录本题学习笔记,笔记内容不作其他限制,但开头需要回答本题的全部“必答问题”。
拓展要求(加分,可选)
- 新增、修改和删除操作加入事务。
- 使用全局异常处理器兜底
Exception:记录日志并返回 500。 - 使用日志记录关键操作。
必答问题
- RESTful 接口的路径和请求方法应该如何设计?
- 事务在什么情况下会回滚?
- 为什么要使用全局异常处理器?
- 统一响应结构对前后端协作有什么帮助?
完成清单
必做:
- [ ] 五个接口都可以正常访问
- [ ] 成功状态码符合接口要求
- [ ] 参数校验能够阻止非法数据
- [ ] 全局处理能够区分 400 和 404
- [ ] 学习笔记已先回答本题全部必答问题
拓展(可选,加分):
- [ ] 写操作使用了事务
- [ ] 兜底异常处理记录日志并返回 500
- [ ] 关键操作有日志记录
