Java同时使用@RequestBody和@RequestParam传参在postman中执行请求报错:Unsupported Media Type
·
🤟致敬读者
- 🟩感谢阅读
- 🟦希望我的文章能帮到您
- 🟪如有兴趣可点关注了解更多内容
📘博主信息
- 👆点标题有惊喜
📃文章前言
- 🔷文章均为学习和工作中整理的笔记,分享记录为主,如有错误请指正,共同学习进步。
- 🔶本文主要介绍Unsupported Media Type报错相关内容
1. 背景
现在有一个需求是定义一个接口,同时传文件和Java对象
我使用了如下注解:@RequestBody传Java对象,@RequestParam传文件参数
如下接口:
@PostMapping(value = "/createSwTool")
public void createSwTool(@RequestHeader("username") String username, @RequestHeader("userGroup") String userGroup,
@RequestBody TbUserInfo tbUserInfo ,
@RequestParam("files") MultipartFile multipartFile){
然而,在执行时失败
2. 报错内容
2.1 IDEA控制台提示
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=--------------------------680157121409098483748812;charset=UTF-8' not supported]
2.2 postman参数


2.3 postman报错
{
"timestamp": "2024-04-22T06:47:27.128+00:00",
"status": 415,
"error": "Unsupported Media Type",
"path": "/test-script/createSwTool"
}
3. 原因分析
同时使用@RequestBody和@RequestParam注解时,@RequestBody注解的内容是java类型而不是json类型时,会遇到这个问题
原因是Java中使用springboot时,这两个注解不能同时使用,@RequestBody用于接受post请求体中的数据,通常为JSON或XML格式的数据
@RequestParam用于接收查询参数或者post请求的form-data
当使用两个注解进行请求时,spring无法解析请求体,请求体被@RequestBody全部占用,此时会抛出Unsupported Media Type异常
4. 解决方法
同时传参文件和Java对象时,使用@RequestPart替换@RequestBody来传Java对象
即:
@PostMapping(value = "/createSwTool")
public void createSwTool(@RequestHeader("username") String username, @RequestHeader("userGroup") String userGroup,
@RequestPart TbUserInfo tbUserInfo ,
@RequestParam("files") MultipartFile multipartFile){
具体如何使用可以参考文章:
如何在Java接口中定义多种类型的参数(如同时定义Java对象和文件类型参数Multipartfile等)
@RequestBody、@RequestPart和@ReqeustParam的使用场景区别可参考:
@RequestBody、@RequestPart和@ReqeustParam的使用说明
📜文末寄语
- 🟢茫茫人海,相识即是有缘
- 🟠拥抱科技,学习永无止步
- 🔵创作不易,分享永不设限
- 🟣如有收获,望君一键三连
📕版权声明:
- 🩵作者:为好全栈
- 💛博客地址:https://hanshan.blog.csdn.net/
- 💚版权:本作品采用《创作共享许可证》进行许可,根据该许可授权的内容可在符合本许可证条款的前提下自由使用、修改和创作衍生作品。
📗版权许可介绍:
- 💙本文采用CC BY-NC-SA许可证
- 🧡此许可允许在使用者仅出于非商业目的以任何媒体或格式分发、重新混合、改编和构建材料,并且前提是注明创作者。
- 💜如果您重新混合、改编或基于该材料进行构建,则必须按照相同的条款对修改后的材料进行许可。
📙更多版权信息请访问以下网址查看:
- 🤎版权官网 https://creativecommons.org/licenses/by-nc-sa/4.0/
- 🩶中文翻译 https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans
更多推荐

所有评论(0)