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

不使用@RequestParam

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

传值,正常接收
今天才知道接口入参@RequestParam原来可用可不用呢

使用@RequestParam

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

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

小结:
不使用RequestParam场景:

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

name测试:

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

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

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

defaultVlue测试

  1. swagger会新增显示默认值

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

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

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

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

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

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

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

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

相关文章:

  • 2021-06-26
  • 2021-12-14
  • 2022-12-23
  • 2022-12-23
  • 2021-11-25
  • 2021-07-06
  • 2022-12-23
猜你喜欢
  • 2021-07-17
  • 2021-09-30
  • 2021-09-22
  • 2021-10-04
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案