Spring @Post方法接收数据为NULL问题求助
问题分析与解决
你遇到的核心问题是:Post请求新增笔记时请求体数据被接收为NULL,但相同参数用在Put请求更新时正常,以下是具体排查和解决步骤:
1. 检查Postman请求头配置
Post请求必须将Content-Type设置为application/json。很多时候Put请求之前已配置该头,而Post请求遗漏,导致Spring无法解析JSON格式的请求体,直接返回NULL。
2. 排查@Builder注解的冲突问题
@Builder与@AllArgsConstructor、@NoArgsConstructor混用可能导致Jackson无法正确实例化NoteDto对象,解决方式二选一:
- 给每个字段添加
@JsonProperty注解,明确JSON字段映射关系:
@Data @Builder @AllArgsConstructor @NoArgsConstructor public class NoteDto { @JsonProperty("noteId") private int noteId; @JsonProperty("topic") private String topic; @JsonProperty("noteBody") private String noteBody; }
- 临时移除
@Builder注解测试,若Post请求能正常接收数据,说明是该注解导致的问题,后续可调整建造者实现逻辑。
3. 核对请求体JSON格式
确保Postman发送的JSON字段名与NoteDto完全一致(大小写敏感),比如不要把noteBody写成notebody或note_body。新增笔记时noteId可不用传递(通常由数据库自增生成),正确请求体示例:
{ "topic": "Spring MVC学习笔记", "noteBody": "请求体解析常见问题汇总" }
4. 确认JSON依赖完整性
若项目未引入jackson-databind依赖,Spring无法处理JSON序列化/反序列化,会导致请求体解析失败。Maven项目需确保包含以下依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency>
5. 调试mapToEntity方法
检查mapToEntity方法是否处理了noteDto为NULL的情况,比如是否存在错误的赋值逻辑,或未对NULL参数做判断导致数据丢失。
内容的提问来源于stack exchange,提问作者Farkhad
相关产品推荐
相关产品推荐

