springboot对于参数的处理,get和post,@GetMapping和@PostMapping

(1)@GetMapping只能通过url传参数。所对应的接口参数只能是用@RequestParam注解或者不注解

(2)@PostMapping既可以通过url传参数,也可以通过body传json参数。所对应的接口参数可以有@RequestParam注解,也可以有@RequestBody注解,也可以没有注解。

(3)不管是@GetMapping还是@PostMapping,除了@RequestBody注解对应的参数是通过json在body里面传参数外,@RequestParam注解和没有注解都是在url中传参数.

(4)用@RequestParam注解修饰的字段前端必须有对应的参数传过来,用@RequestBody修饰的类,前端至少要传一个空的json串,json串内容不一定需要和类对应,json串中只要有类的字段,后端的类就会从中取出对应的字段并赋值。

(5)对于类对象的参数,不管对于@RequestBody还是@RequestParam还是没有注解,前端不管传来多少个字段,后端的类对象只取类中包含的对象。

举个例子,比如后端有一个类User的对象:

假设未用@RequestBody修饰,只能通过url传参:

情况一:传的参数与类对应:

情况二:传的参数与类不对应:

假设使用@RequestBody修饰,只能通过body的json字符串传参(当然url里面也可以传值,只是不会被@RequestBody接收,只能被@RequestParam和无注解的接收):

情况一:传的参数与类对应:

情况二:传的参数与类不对应:

总结:不管是url传参,还是body传参,对于后端的参数来说(包括普通变量和类变量),我们可以把类变量看成是很多普通变量的集合,后端只要求前端必须传被注解的变量,未被注解的变量前端可传可不传,前端传了后端就会取,不传后端默认该变量为null。也就是说,前端传的参数不一定与类变量一一对应也是不会报错的,但最好还是一一对应。@RequestParam("easd")指定了前端必须传的参数名,而@RequestBody只指定前端必须传一个json在body里面,至于json字符串的内容,不一定与类变量一一对应,这点与get命令是相似的。

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值