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

Spring Boot Post请求报400 Bad Request问题求助

Spring Boot Post请求400/405问题排查与解决

1. 首先修正URL路径错误

你的Controller中Post请求映射的路径是/api/sis/reg_student,但你实际请求的是/api/sis/student_reg,路径名称完全颠倒,这是最基础的匹配问题。先将请求URL改为/api/sis/reg_student。

2. 400错误的核心原因与修复

URL修正后若仍出现400,大概率是请求体与Student实体类不兼容或实体类配置冲突:

  • 字段命名不兼容:实体类中字段为FirstName、LastName(首字母大写),但Jackson默认按驼峰规则(firstName、lastName)解析请求体。若请求体用小写开头字段,会导致映射失败。
    修复方案二选一:
    • 将实体类字段改为标准驼峰命名:firstName、lastName;
    • 在字段上添加@JsonProperty注解指定匹配名称:
      @JsonProperty("FirstName")
      private String firstName;
      
  • ID生成逻辑冲突:你同时使用了JPA序列生成ID(@GeneratedValue)和手动UUID生成,两种方式冲突会导致序列化异常。
    修复方案二选一:
    • 改用UUID作为ID:删除序列相关注解,在构造方法中生成UUID:
      @Id
      private String id;
      
      public Student() {
          this.id = UUID.randomUUID().toString();
      }
      
    • 保留序列生成:删除手动UUID代码,确保数据库存在student_sequence序列。

3. 405错误是正常现象

对Post请求URL发送Get请求时返回405(Method Not Allowed)是合理的,该URL仅支持Post方法,无需额外处理。

额外调试建议

  • 发送Post请求时,确保请求头包含Content-Type: application/json,且请求体为合法JSON,示例:
    {
        "firstName": "张三",
        "lastName": "李四",
        "email": "zhangsan@example.com"
    }
    
  • 修改Controller和Service方法,返回新增的学生对象方便调试:
    // Controller
    @PostMapping("/reg_student")
    public Student registerStudent(@RequestBody Student student){
        return studentService.addStudent(student);
    }
    
    // Service
    public Student addStudent(Student student){
        return studentRepository.save(student);
    }
    

内容的提问来源于stack exchange,提问作者Zee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:24:32