Spring Boot 接口报错应按 HTTP 状态码分层定位:4xx 表示前端问题(如路径错误、参数解析失败),5xx 表示后端异常(如空指针、数据库连接失败),CORS 错误则因响应头缺失 Access-Control-Allow-Origin;需结合日志中 DispatcherServlet 映射信息与异常栈顶层原因精准排查,并统一配置全局异常处理器与 Security 放行 /error 端点。

Spring Boot 接口报错,不能只盯着控制台那几行红字。关键要按 HTTP 状态码分层定位:4xx 是前端传得不对,5xx 是后端逻辑崩了,跨域是安全策略卡住了。对症下药,效率翻倍。
看状态码,先定大方向
浏览器或 Postman 返回的状态码就是第一线索:
- 404:接口根本没注册上,不是路径写错就是 Controller 没被 Spring 扫描到;
- 400:请求发过去了,但参数解析失败,比如 JSON 字段名不匹配、必填字段缺失、日期格式不对;
-
403:尤其在加了 Spring Security 的项目里,常见于抛出 404/500 后被重定向到
/error,而这个路径没放行,结果返回了 403; - 500:后端代码执行中炸了,空指针、数据库连不上、JSON 序列化循环引用都可能触发;
-
CORS 错误(非标准状态码):浏览器控制台明确提示跨域被拦截,说明响应头里缺
Access-Control-Allow-Origin。
查日志,盯住 DispatcherServlet 和异常栈
启动时加 --debug 或在 application.properties 中设 logging.level.org.springframework.web=DEBUG,重点关注两处:
- DispatcherServlet 是否成功映射到你的接口路径(日志里会打印
Mapped to xxxController.xxxMethod); - 报错时的完整堆栈,从最上面的
Caused by:往下读,通常第二、第三行就暴露真实问题(比如NullPointerException在哪一行、SQLException提示连接超时); - 如果看到
SecurityContextHolder to anonymous或Http403ForbiddenEntryPoint,基本可锁定是 Security 配置问题。
验请求,前后端对齐三要素
前端发的请求必须和后端定义严格一致:
-
路径全匹配:注意是否多写了斜杠(
/user/listvs/user/list/)、大小写、版本前缀(/v1/user); -
方法类型一致:
@GetMapping就不能用 POST 调,@PostMapping要确认 Content-Type 是application/json; -
参数承载方式正确:路径参数用
@PathVariable,查询参数用@RequestParam,JSON 主体用@RequestBody——混用必 400。
配异常,别让默认页面掩盖真相
REST 接口不该返回 HTML 错误页。两件事必须做:
- 加全局异常处理器,用
@RestControllerAdvice捕获业务异常和RuntimeException,统一返回 JSON 格式错误体; - 若用了 Spring Security,务必在
SecurityFilterChain中放行/error端点:requestMatchers("/error").permitAll(),否则所有错误都会被拦成 403; - 禁用 Whitelabel 页面(可选):在
application.properties加server.error.whitelabel.enabled=false,避免干扰判断。


















