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序列。
- 改用UUID作为ID:删除序列相关注解,在构造方法中生成UUID:
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
相关产品推荐
相关产品推荐

