You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调试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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:02:33