@RequestBody是否存在的影响
首先 明确一点是 RequestBody注解的主要作用就是用于接收前端的参数,当我们使用post请求的时候,我们会将参数放在request body中,此时我们就需要在Controller的方法的参数前面加上@RequestBody用来接受到前端传过来的request body中的值。
@PostMapping("/save")
public Response<?> save(@RequestBody Ince iance){
return null;
}
不使用@RequestBody注解时,可以接收Content-Type为application/x-www-form-urlencoded类型的请求所提交的数据,数据格式:aaa=111 b b b = 222 。
f o r m 表 单 提 交 以 及 j Q u e r y 的 bbb=222。form表单提交以及jQuery的bbb=222。form表单提交以及jQuery的.post()方法所发送的请求就是这种类型。
使用@RequestBody注解时,用于接收Content-Type为application/json类型的请求,
数据类型是JSON:{“aaa”:“111”,“bbb”:“222”}
以上内容来源于不同的资料内容。
总结一下就是:
当入参只有一个参数的时候,此时** @RequestBody **的注解是否存在没有必要性,比如:String abcd;
那么前端传参的时候:传入
abcd = "1234";
{
abcd = "1234"
}
二者的区别不是很大。
只有当入参较多,或者是一个实体类入参时,加上该注解,前端以json的形式传参,后台才能接收到。
注意,如果多个值入参,比如:String aaa, String bbb,String ccc,
当以这种形式入参时需要加上**@RequestParam**注解,用于匹配各参数是否能一一对应上。
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值
关于这三者的详解 SpringBoot - @PathVariable/@RequestParam/@RequestBody注解使用详解 可点击跳转