POST请求添加电影评论时RequestBody接收值为null问题求助
解决@RequestBody接收CommentDto字段全为null的问题
以下是针对该问题的排查和解决方案:
1. 确认请求头Content-Type是否正确
Spring的@RequestBody注解默认仅处理application/json类型的请求体。如果请求发送的是multipart/form-data或application/x-www-form-urlencoded格式,会直接导致字段绑定失败,全部返回默认值。
- 解决:发送请求时必须携带请求头
Content-Type: application/json。
2. 检查CommentDto的@JsonProperty映射与请求体字段名是否匹配
如果CommentDto使用了@JsonProperty指定字段名,必须确保请求体中的JSON字段名与注解值完全一致:
- 示例:若Dto中写
@JsonProperty("movie_id") private Long movieId;,请求体中必须传"movie_id": 123,而非"movieId": 123; - 若希望Spring自动处理驼峰与下划线的转换,可在配置文件中添加:
此时Dto的驼峰字段spring: jackson: property-naming-strategy: SNAKE_CASEmovieId会自动匹配请求体中的movie_id字段。
3. 确保CommentDto具备无参构造方法和完整的getter/setter
Spring的JSON消息转换器(Jackson)需要通过无参构造方法实例化Dto对象,再通过setter方法完成赋值:
- 手动添加无参构造和所有字段的getter/setter;
- 或使用Lombok的
@Data+@NoArgsConstructor注解简化代码(需确保Lombok依赖已正确引入)。
4. 验证请求体的JSON格式合法性
请求体的JSON语法错误或字段拼写错误会直接导致解析失败:
- 检查是否存在遗漏的逗号、不匹配的引号;
- 核对字段名拼写(比如把
comment写成commet,rating写成rate等); - 正确请求体示例:
{ "movieId": 1, "rating": 5, "comment": "这部电影很棒!" }
5. 确认Spring Boot依赖完整性
确保项目依赖中已引入spring-boot-starter-web,它包含了Jackson JSON解析所需的核心包:
- Maven依赖示例:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
内容的提问来源于stack exchange,提问作者user24868563
相关产品推荐
相关产品推荐

