Spring POST提交JSON报HTTP 415 Unsupported Media Type错误排查
问题描述
发送POST请求时服务端返回HTTP 415 Unsupported Media Type错误,即使手动设置请求头Content-Type: application/json问题依旧存在,GET请求可正常响应。最初猜测问题与实体类的ManyToOne关联依赖有关,无法确定如何构造符合要求的请求。
关联代码
Director实体类
@Entity @Table(name = "director") @Data public class Director { @Id @Column private int id; @Column private String name; @Column private String surname; @Column private String post; @Column private int numberPhone; @OneToMany(mappedBy = "directorFromProjectActivities") @JsonManagedReference private List<ProjectActivities> projectActivitiesList; }
Controller层代码
@RestController @RequestMapping("/api") public class RestControllerDirector { import org.example.dao.IDao; import org.example.entity.Director; import org.example.services.IService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @PostMapping(value = "/director", consumes = {"*/*"}) public void addDirector(@RequestBody Director director){ dao.add(director); } }
Postman测试请求体
{ "id": 100, "name": "Alex", "surname": "Round", "post": "HR", "numberPhone": 82171788 }
Jackson依赖配置
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.1</version> </dependency>
解决方案
415错误发生在请求参数反序列化阶段之前,核心原因是服务端无法匹配请求携带的媒体类型和接口声明的可接收类型,和实体类的@OneToMany关联无关——关联映射的反序列化异常会返回400错误,不会触发415。按以下步骤修复即可:
- 修正接口的
consumes配置:当前consumes = {"*/*"}的写法存在匹配缺陷,Spring不会将其通配识别为支持JSON类型,直接将配置改为明确声明接收JSON类型,或直接删除consumes属性让Spring自动适配:
// 修正后的接口定义 @PostMapping(value = "/director", consumes = "application/json") public void addDirector(@RequestBody Director director){ dao.add(director); }
- 检查消息转换器配置:如果是Spring Boot项目,确保已经引入
spring-boot-starter-web依赖,仅单独引入jackson-databind不会自动注册JSON消息转换器,会导致Spring找不到可以处理application/json类型请求的处理器,直接抛出415错误。如果是原生Spring项目,需要手动在MVC配置中注册MappingJackson2HttpMessageConverter实例。 - 检查Postman请求配置:发送请求时选择
raw类型,下拉选项选中JSON,不要手动修改Content-Type请求头添加多余的charset或boundary参数,也不要使用form-data、x-www-form-urlencoded等表单格式发送JSON内容。
内容的提问来源于stack exchange,提问作者IStyped
相关产品推荐
相关产品推荐

