我们在学习的过程中会发现有时候不加@RequestParam也没有关系,照样可以获取到前端传过来的参数,加上了似乎也没啥用,那么到底加不加呢。下面实验一下不加的时候和加的时候有啥区别,相信就明白了到底用不用加。
不加的时候
@GetMapping("/request")
@ResponseBody
public String test01(String name){
String returnValue = "返回的字符串为:"+name;
return returnValue;
}
分三种请求:
①不带参数直接请求
返回null
②带正确参数请求
返回我们发送的参数对应的值。
③带错误参数(参数名不一致)
还是返回null,后台对我们传过来的参数名不一致也是认为我们没有传参的,这和Java的通过类型来判断是不一样的。
加上
@GetMapping("/request")
@ResponseBody
public String test01(@RequestParam(value = "haha") String name){
String returnValue = "返回的字符串为:"+name;
return returnValue;
}
还是分三种情形来分析,注意上面的参数名不一致,一个是haha
,一个是name
。
①不带参数
前端已经报错,后台一切正常。为什么呢?
@RequestParam(required = false)还有一个参数required
,默认为true,要求我们必须传参数。设置为false之后,效果如下:
②传的参数名为haha
后台接收到了参数,并正常返回。
③传的参数名为name
后台没有接收到参数。
通过分析得出如下结论:
- @RequestParam默认要求必须传参,可以通过设置
required = false
来关闭 - 如果为@RequestParam设置参数名,以他为准,不设置的话默认为其后的类型参数名