问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SpringBoot中处理multipart/form-data报错的解决方案

创作时间:
作者:
@小白创作中心

SpringBoot中处理multipart/form-data报错的解决方案

引用
CSDN
1.
https://blog.csdn.net/m0_74823524/article/details/145490341

一、报错Content type ‘multipart/form-data; boundary=…; charset=UTF-8’ not supported

报错原因

在使用Postman进行测试传参数时,如果选择了form-data方式,并在form-data中输入参数的键值对,那么就不能使用@RequestBody注解来接收参数。form-data和x-www-form-urlencoded这两种Content-Type格式的数据,应该使用@RequestParam注解来接收。

补充知识

@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。@RequestParam 和 @RequestBody 是用于处理HTTP请求的两个常用注解,它们分别用于处理查询参数和请求体中的数据。

在POST请求@PostMapping中,可以使用@RequestBody和@RequestParam。

@RequestParam
@RequestParam注解用来接收请求URL后面的参数,或者Content-Type为multipart/form-data、application/x-www-form-urlencoded时的HTTP body数据。

例如,如果你有一个URL为http://example.com/api/users?name=John,你可以使用@RequestParam来获取name参数的值。这通常用于获取简单的键值对数据。

@PostMapping("/users")
public String printHello(@RequestParam String name) {
    return "Hello, " + name;
}

此时因为是使用@RequestParam封装的,所以当使用Postman进行测试传参数时,需要用form-data传递参数。

@RequestBody
@RequestBody注解告诉Spring MVC将请求体(例如JSON或XML格式的数据)绑定到String类型的参数data上。这意味着方法可以直接操作请求体中的数据。

如果你要处理的是一个复杂的对象,或者你希望直接将请求体映射到一个Java对象上,你应该使用@RequestBody。

例如,如果你发送一个JSON格式的数据到服务器,可以创建一个对应的Java类,并使用@RequestBody来将JSON数据映射到这个类的对象上。这通常用于处理POST或PUT请求,其中请求体包含需要处理的数据。

@PostMapping("/users")
public String printUser(@RequestBody User user) {
    return "User's name is " + user.getName();
}

class User {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

代码中的@RequestBody User user表示@RequestBody注解告诉Spring MVC将请求体(例如JSON格式的字符串)转换为User对象,并将其作为参数传递给registerUser方法。

此时因为是使用@RequestBody封装的,所以当使用Postman进行测试传参数时,需要用raw,并选择json传递参数。

总的来说,@RequestParam注解用于获取简单的键值对数据,而@RequestBody注解用于将请求体映射到复杂的数据对象。

解决方法

将@RequestBody注解改为@RequestParam注解就可以了。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号