《课次27:统一结果封装 & 全局异常处理》学习笔记

一、教学目标

  1. 创建 Result 类,统一 API 返回格式。
  2. 使用 @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 类 泛型类,统一封装 codemessagedata 三字段
静态工厂方法 success(data)success(message)error(message) 便捷创建响应对象
全局异常处理器 @RestControllerAdvice + @ExceptionHandler(RuntimeException.class)
控制器改造 所有接口返回 Result<T> 类型
接口测试 Postman 验证,返回 JSON 格式的统一响应
本课次完成了统一结果封装和全局异常处理的配置,这是构建规范 RESTful API 的重要基础。后续开发的所有接口都将遵循 Result 格式返回数据,前端可以统一处理响应和异常。
posted @ 2026-06-29 13:06  WJX-nb666  阅读(0)  评论(0)    收藏  举报