Skip to content

Web-03 Spring Boot CRUD、事务与全局异常处理 ​

  • 分类: Web 题
  • 难度: 综合

本节知识点 ​

  • RESTful 接口设计
  • Controller、Service、Mapper 分层
  • 统一响应结构
  • 参数校验
  • Spring 事务管理
  • 日志
  • 全局异常处理器

接口要求 ​

在上一题的学生表和 MyBatis 基础上,实现以下接口:

功能方法与路径成功状态码
查询全部学生GET /api/students200
根据 id 查询GET /api/students/{id}200
新增学生POST /api/students201
修改学生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。
  • 使用日志记录关键操作。

必答问题 ​

  1. RESTful 接口的路径和请求方法应该如何设计?
  2. 事务在什么情况下会回滚?
  3. 为什么要使用全局异常处理器?
  4. 统一响应结构对前后端协作有什么帮助?

完成清单 ​

必做:

  • [ ] 五个接口都可以正常访问
  • [ ] 成功状态码符合接口要求
  • [ ] 参数校验能够阻止非法数据
  • [ ] 全局处理能够区分 400 和 404
  • [ ] 学习笔记已先回答本题全部必答问题

拓展(可选,加分):

  • [ ] 写操作使用了事务
  • [ ] 兜底异常处理记录日志并返回 500
  • [ ] 关键操作有日志记录

Released under the MIT License.