当前位置:   article > 正文

Java同时使用@RequestBody和@RequestParam传参在postman中执行请求报错:Unsupported Media Type_java @requestbody postman

java @requestbody postman

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


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){
  • 1
  • 2
  • 3
  • 4

然而,在执行时失败

2. 报错内容

2.1 IDEA控制台提示

Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=--------------------------680157121409098483748812;charset=UTF-8' not supported]
  • 1

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"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3. 原因分析

同时使用@RequestBody@RequestParam注解时,@RequestBody注解的内容是java类型而不是json类型时,会遇到这个问题
原因是Java中使用springboot时,这两个注解不能同时使用,@RequestBody用于接受post请求体中的数据,通常为JSONXML格式的数据
@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){
  • 1
  • 2
  • 3
  • 4

具体如何使用可以参考文章:
如何在Java接口中定义多种类型的参数(如同时定义Java对象和文件类型参数Multipartfile等)

@RequestBody、@RequestPart和@ReqeustParam的使用场景区别可参考:
@RequestBody、@RequestPart和@ReqeustParam的使用说明


感谢阅读,祝君暴富!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/817794
推荐阅读
相关标签
  

闽ICP备14008679号