《课次27:统一结果封装 & 全局异常处理》学习笔记
一、教学目标
- 创建
Result类,统一 API 返回格式。 - 使用
@ControllerAdvice处理全局异常。
二、核心知识点
| 知识点 | 说明 |
|---|---|
| 统一返回格式 | 封装为 {code, message, data} 结构,便于前端统一处理 |
| @RestControllerAdvice | 全局异常处理器注解,可统一处理所有控制器抛出的异常 |
| @ExceptionHandler | 指定需要处理的异常类型 |
三、操作步骤
本课次是在课次26的工程基础上继续操作。
1. 创建 Result 类
- 在
com.weitoutiao文件夹下新建包common,然后在该包下新建 Java 类Result - 代码如下:
package com.weitoutiao.common;
import lombok.Data;
@Data
public class Result<T> {
private Integer code;
private String message;
private T data;
private Result(Integer code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public static <T> Result<T> success(T data) {
return new Result<>(200, "success", data);
}
public static <T> Result<T> success(String message) {
return new Result<>(200, message, null);
}
public static <T> Result<T> error(String message) {
return new Result<>(500, message, null);
}
}
2. 创建全局异常处理器
- 在
common包下新建 Java 类GlobalExceptionHandler - 代码如下:
package com.weitoutiao.common;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
public Result<String> handleRuntimeException(RuntimeException e) {
e.printStackTrace();
return Result.error(e.getMessage());
}
}
说明:
@RestControllerAdvice是@ControllerAdvice和@ResponseBody的组合注解,标记的类可以拦截所有控制器抛出的异常,并将返回结果直接写入响应体。
3. 修改 HelloController 使用 Result
- 修改
HelloController,让接口返回统一的Result格式:
package com.weitoutiao.controller;
import com.weitoutiao.common.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public Result<String> hello() {
return Result.success("微头条后端启动成功!");
}
}
4. 本次课的工程目录
- 完成上述步骤后,工程目录结构大致如下:
com.weitoutiao
├── common
│ ├── GlobalExceptionHandler
│ └── Result
├── config
│ ├── MyBatisPlusConfig
│ └── MyMetaObjectHandler
├── controller
│ └── HelloController
├── entity
│ ├── News
│ └── User
├── mapper
│ ├── NewsMapper
│ └── UserMapper
├── service
│ ├── NewsService
│ └── impl
│ └── NewsServiceImpl
└── WeiTouTiaoSpringBootApplication
四、使用 Postman 验证
1. 启动项目
找到启动类 WeiTouTiaoSpringBootApplication,点击运行按钮启动主程序。
2. 安装并打开 Postman
- 安装好 Postman 后打开应用
3. 创建 Collection 和 Request - 新建一个 Collection(集合)
- 在 Collection 中添加一个 Request(请求)
- Request 命名为
hello,保存
4. 发送请求 - 在 URL 栏输入:
http://localhost:8080/hello - 点击 Send 发送请求
- 在 Body 中查看后端返回的数据(选择 JSON 格式),返回结果如下:
{
"code": 200,
"message": "success",
"data": "微头条后端启动成功!"
}
五、笔记总结
| 步骤 | 核心内容 |
|---|---|
| Result 类 | 泛型类,统一封装 code、message、data 三字段 |
| 静态工厂方法 | success(data)、success(message)、error(message) 便捷创建响应对象 |
| 全局异常处理器 | @RestControllerAdvice + @ExceptionHandler(RuntimeException.class) |
| 控制器改造 | 所有接口返回 Result<T> 类型 |
| 接口测试 | Postman 验证,返回 JSON 格式的统一响应 |
本课次完成了统一结果封装和全局异常处理的配置,这是构建规范 RESTful API 的重要基础。后续开发的所有接口都将遵循 Result 格式返回数据,前端可以统一处理响应和异常。 |
浙公网安备 33010602011771号