调试HTTP 400 Bad Request:Spring Boot POST请求错误排查
Spring Boot POST请求返回400 Bad Request问题排查
可能的错误原因
1. JSON请求体格式错误
你提供的请求体最后一个字段manager后面多了一个多余的逗号,这属于无效JSON格式,会导致Spring无法正确解析请求体,直接返回400错误:
{ "name": "Abcd", "dept": "Clinical", "manager":"XYZX", // 此处逗号多余,需删除 }
修正后的合法JSON:
{ "name": "Abcd", "dept": "Clinical", "manager":"XYZX" }
2. 控制器代码逻辑bug(非400直接原因,但需修正)
你的控制器方法参数是Employee employee,但调用业务方法时用了未定义的dataForImport,应该替换为传入的employee参数:
@PostMapping("/addEmployees") public void addEmployee(@RequestBody Employee employee) { // 替换为传入的employee参数,同时注意此处应该调用Service层而非自身控制器 employeeService.addEmployees(employee); }
调试方法
开启详细日志:在
application.properties中添加配置,获取请求解析的具体错误信息:logging.level.org.springframework.web=DEBUG logging.level.com.fasterxml.jackson=DEBUG重启项目后重新发送请求,控制台会输出JSON解析的异常细节,比如格式错误、字段不匹配等。
绑定校验结果获取错误详情:在控制器方法中添加
@Valid注解和BindingResult参数,直接捕获请求体的解析/校验错误:@PostMapping("/addEmployees") public void addEmployee(@Valid @RequestBody Employee employee, BindingResult bindingResult) { if (bindingResult.hasErrors()) { bindingResult.getAllErrors().forEach(error -> System.out.println(error.getDefaultMessage())); return; } employeeService.addEmployees(employee); }校验JSON合法性:利用IntelliJ IDEA的JSON校验功能(编辑器会自动标红格式错误),或手动检查是否存在多余逗号、引号不匹配等问题。
检查实体类与JSON字段匹配:确认实体类字段名(如
name、dept)与JSON键完全一致,同时确保getter/setter方法拼写正确(比如getManager()、setManager()),Spring依赖这些方法完成对象序列化/反序列化。
内容的提问来源于stack exchange,提问作者moka
相关产品推荐
相关产品推荐

