基于 RESTful 风格的 Controller 设计与单元测试
在实际开发中,单元测试往往需要和业务代码同步进行。我们提倡 TDD(测试驱动开发),即先写好单元测试用例,再着手实现业务逻辑以满足这些用例。
引入测试依赖
Spring Boot 提供了便捷的测试支持。只需引入 spring-boot-starter-test 依赖,它会自动传递依赖最新的 JUnit 5.x 框架。
<!-- Spring Boot 测试依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
常用 RESTful 映射注解
构建 RESTful 接口时,以下注解是核心:
- @Controller:标记类为控制器。
- @ResponseBody:方法返回值直接写入响应体,而非解析为视图路径。
- @RestController:组合了上述两个注解,适合纯 API 场景。
- @RequestMapping:通用请求映射,支持多种 HTTP 方法。
- @GetMapping / @PostMapping / @PutMapping / @DeleteMapping:分别对应 GET、POST、PUT、DELETE 请求,语义更明确。
- @RequestParam:绑定查询参数。
- @PathVariable:提取路径中的占位符值。
- @RequestBody:接收请求体中的 JSON 数据。
重构为 RESTful 风格
将传统的增删查改方法调整为 RESTful 风格,关键在于两点:一是移除视图跳转,直接使用返回值作为 JSON 响应;二是利用不同的 HTTP 动词区分操作。
假设资源路径统一为 /books,区别在于请求方式:
- 添加:POST
- 查询:GET
- 删除:DELETE(注意:旧版有时误用 GET 做删除,RESTful 规范应使用 DELETE)
修改前,方法可能返回视图名称;修改后,配合 @RestController 或 @ResponseBody,直接返回对象或集合,框架自动序列化为 JSON。
接口验证
使用 Postman 对三个接口进行测试,确保行为符合预期:
- 添加书籍:发送 POST 请求至
/books,确认返回新增对象的 JSON 信息。 - 查看书籍:发送 GET 请求,验证列表或详情数据的正确性。


