今天才知道接口入参@RequestParam原来可用可不用呢

以前一直以为接口接收参数必须用RequestParam这个注解才可以接收到
今天才知道接口入参@RequestParam原来可用可不用呢_第1张图片
最近偶然的机会接口报错,检查错误的时候发现忘记写了,但还是可以正常接收到参数,
今天才知道接口入参@RequestParam原来可用可不用呢_第2张图片
刚开始以为是因为从以前的@RequestMapping改用了@GetMapping/@PostMapping的原因,仔细想想,这个只是个简化的而已,然后…
今天才知道接口入参@RequestParam原来可用可不用呢_第3张图片

不使用@RequestParam

测试
今天才知道接口入参@RequestParam原来可用可不用呢_第4张图片
有null
今天才知道接口入参@RequestParam原来可用可不用呢_第5张图片

传值,正常接收
今天才知道接口入参@RequestParam原来可用可不用呢_第6张图片

使用@RequestParam

使用@RequestParam,没有意外,正常接收参数,我用的swagger测试接口,swagger就有个必填标志
今天才知道接口入参@RequestParam原来可用可不用呢_第7张图片

今天才知道接口入参@RequestParam原来可用可不用呢_第8张图片
swagger里面这个必传标志,是因为@RequestParam有一个属性,required,默认true,参数必传,也可以自己设置为false,再试试为false
今天才知道接口入参@RequestParam原来可用可不用呢_第9张图片
今天才知道接口入参@RequestParam原来可用可不用呢_第10张图片
也是正常请求,@RequestParam一共有4个属性:require,name,value,defaultValue
required:就是刚刚设置参数是否为必传,默认true
name:入参的key值(也可以叫变量名,如果接口变量名和入参不一致,可以手动设置这个属性为入参变量名,其它地方还是可以用自定义变量名)
value:也是设置key值参数名字,如果自定义参数名和入参参数名一致,可以不写
defaultValue:参数默认值(当变量设置了默认值,require属性指定为true会失效)

小结:
不使用RequestParam场景:

  • 接收参数比较少,每一次变量名都和入参变量名一模一样,没有参数需要设置默认值,参数可传可不传的情况
    使用RequestParam:
  • 参数可以为非必传,不传时候需要默认值(defaultValue)
    出现入参参数名和自定义参数名不一致,但是接口完成了开发,不想过多改动的(使用name属性设置)

name测试:

  1. 设置name属性,指定变量名,

今天才知道接口入参@RequestParam原来可用可不用呢_第11张图片

今天才知道接口入参@RequestParam原来可用可不用呢_第12张图片

defaultVlue测试

  1. swagger会新增显示默认值

今天才知道接口入参@RequestParam原来可用可不用呢_第13张图片

  1. 输入参数的输入框填充了默认值

今天才知道接口入参@RequestParam原来可用可不用呢_第14张图片

  1. 测试输入为空,现实的默认值(请求了两次,所以输出了两次)

今天才知道接口入参@RequestParam原来可用可不用呢_第15张图片
在这里插入图片描述

  1. 测试手动修改require属性为true,参数为空也会返回默认值

今天才知道接口入参@RequestParam原来可用可不用呢_第16张图片

今天才知道接口入参@RequestParam原来可用可不用呢_第17张图片

你可能感兴趣的:(Spring,Boot)