Spring Boot MySQL示例遇HttpMediaTypeNotSupportedException错误求助
解决Spring Boot中的HttpMediaTypeNotSupportedException错误
这个错误其实很典型,本质就是你的请求发送的内容类型和控制器方法期望接收的类型不匹配。具体来说,你发的是application/x-www-form-urlencoded(表单编码格式),但你的NoteController里的接口方法应该是用了@RequestBody注解来接收JSON格式的请求体,Spring没法把表单数据转换成你的Note实体类,所以抛出了这个异常。
下面给你几种针对性的解决办法:
方法1:调整请求格式为JSON(推荐,REST API标准做法)
如果你的接口是遵循REST规范的,用JSON作为请求体是标准操作:
- 用Postman/ApiFox等测试工具时,把请求的
Content-Type请求头设置为application/json - 请求体改用JSON格式编写,比如:
{ "title": "我的第一条笔记", "content": "这是笔记的具体内容" }
- 保持控制器方法的
@RequestBody注解不变,比如:
@PostMapping("/notes") public ResponseEntity<Note> createNote(@RequestBody Note note) { // 你的业务逻辑代码 }
方法2:修改控制器接收表单数据(如果确实需要表单格式)
如果你因为业务场景必须接收表单提交的数据,把@RequestBody换成@ModelAttribute注解就行,Spring会自动把表单的键值对绑定到Note实体类的属性上:
@PostMapping("/notes") public ResponseEntity<Note> createNote(@ModelAttribute Note note) { // 你的业务逻辑代码 }
注意:你的Note实体类必须要有对应的getter和setter方法,否则Spring没法完成属性绑定。
方法3:检查实体类的基础配置
不管用哪种方式,都要确保你的Note实体类配置正确:
- 有无参构造函数(Spring反射实例化对象必须)
- 所有属性的getter和setter方法
- JPA相关注解(比如
@Entity、@Id)配置无误
内容的提问来源于stack exchange,提问作者Jeff Cook
相关产品推荐
相关产品推荐

