【SpringBoot】 解决报错Content type ‘multipartform-data; boundary=...; charset=UTF-8‘ not supported

目录

报错原因

补充知识

@RequestParam

@RequestBody

解决方法


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

报错原因

我在使用postman进行测试传参数时,用的是form-data,在form-data里输入参数的键值对。

而form-data和x-www-form-urlencoded不可以用@RequestBody,可以用@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/usersname=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注解就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值