在 spring boot 中,应保持成功响应(apiresponse)与错误响应(errorresponse)的结构分离,通过 http 状态码区分语义;前端依据 status 判断响应类型并分别解析,而非强行合并两类 dto。
在构建健壮的 RESTful API 时,一个常见误区是试图将“成功响应”和“错误响应”强制统一为同一个 Java 类(如让 GlobalExceptionHandler 返回 ApiResponse)。这种做法看似简化了前端处理逻辑,实则违背了 HTTP 协议的设计原则,并引入类型混淆、语义失真和可维护性下降等风险。
✅ 正确做法是:职责分离 + 状态驱动
- ✅ 成功路径:控制器返回 ResponseEntity>,HTTP 状态码为 2xx(如 200 OK)
- ✅ 异常路径:@RestControllerAdvice 返回 ResponseEntity,HTTP 状态码为对应错误码(如 400 Bad Request、404 Not Found、500 Internal Server Error)
- ✅ 前端不依赖响应体结构判断成败,而优先检查 response.status —— 这是 REST 的契约基石。
以下是推荐的实现结构:
1. 保持两类响应体清晰独立