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

Spring Rest应用POST请求报Content type 'application/json'不支持错误求助

解决POST创建用户时的415 Unsupported Media Type错误

嘿,咱们来搞定你遇到的这个415错误。我看了你的代码,发现几个关键问题,尤其是第一个,大概率就是直接诱因:

1. 赶紧移除Service层方法上的@RequestBody注解

你的UserService.createUser方法居然加了@Valid @RequestBody!这俩注解是Spring MVC控制器层专属的,用来把HTTP请求体绑定到方法参数上。Service层的方法只需要接收普通Java对象就行,完全不需要这俩注解。Spring看到Service方法上的@RequestBody后,会错误地尝试从当前请求里再解析一次请求体,但此时请求体已经被Controller层解析过了,直接就触发了媒体类型不支持的错误。

修改后的UserService代码应该是这样:

// 删掉@Valid和@RequestBody
public User createUser(User user) {
    user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
    user.setRoles(new HashSet<>(roleRepository.findAll()));
    return userRepository.save(user);
}

2. 检查Jackson序列化依赖是否齐全

如果是Spring Boot项目,确保已经引入了spring-boot-starter-web依赖——它默认包含了Jackson的序列化/反序列化组件,这是Spring处理JSON请求体必需的。要是普通Spring项目,得手动加Jackson的核心依赖:

<!-- Maven示例,版本号选和你的Spring版本兼容的就行 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

3. 确保实体类能正常序列化/反序列化

虽然这不是直接导致415的原因,但为了避免后续踩坑,检查下你的User实体类:

  • 确认所有字段都有对应的getter和setter方法(你说已经省略了,没问题)
  • 对于Date类型的字段,可以加Jackson的格式化注解,避免日期序列化出错:
@JsonFormat(pattern = "yyyy-MM-dd")
@Column(name = "user_birth_date")
@Temporal(TemporalType.DATE)
private Date birth_date;

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(nullable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
@CreatedDate
private Date createdAt;

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(nullable = false)
@Temporal(TemporalType.TIMESTAMP)
@LastModifiedDate
private Date updatedAt;

4. 最后再确认下请求配置

虽然你说请求头和类型都对,但还是再核对一遍:

  • 确保请求的Content-Type头确实是application/json;charset=UTF-8,别写错大小写或者多打空格
  • 检查请求体的JSON格式是否正确,字段名要和实体类的属性名匹配(比如实体类是username,请求体里别写成userName,除非你加了@JsonProperty注解指定映射关系)

按照上面的步骤改完,再测试你的POST请求,应该就能解决这个415错误啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:36:43