@RequestBody和@RequestParam的区别笔记

引言

在学习SpringBoot的时候,我只是粗略地学习了@RequestParam的使用方法,并没有认真学习@RequestBody

然而在阅读别人写的代码的时候,我发现了@RequestBody注解,于是尝试了解@RequestParam@RequestBody的区别。

搜索

经过搜索,我发现了一篇对这两个注解的区别讲解十分十分透彻的文章,在这里贴一个链接:
@RequestBody和@RequestParam区别

大体内容是说:

@RequestParam

  1. @RequestParam注解是用于处理content-typeapplication/x-www-form-lencoded编码格式的数据和url中拼接的数据,不能接收其他格式的数据
  2. 虽然用@RequestParam注解获取到的json数据也可以通过处理转化为想要的类型,但不推荐使用这种方法。(具体方法可以参考原文)

@RequestBody

  1. 注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。

除此之外,原文还介绍了更多关于这两个注解的内容,如果有兴趣可以点击链接查看。

源码

在网上搜索答案之外,我还查看了RequestParam注解的源码,其中有这么一段:
源码部分
大概意思是说:

支持SpringMVC和SpringWebFlux中带注释的处理程序方法有如下几种:

  • 在Spring MVC中,“请求参数”映射到请求参数、表单数据和multipart requests(可能翻译成“文件数据”?)的一部分。这是因为Servlet API将请求参数和表单数据结合进了一个集合叫做“parameters”,并且这个集合包括了自动解析的请求正文。
  • 在Spring WebFlux中,“request parameters”集合仅仅包括了请求参数,若想要获取全部三种数据——请求、表单数据和“multipart data“(文件数据),你可以将数据绑定到命令对象并且给它加上ModelAttribute的注解。

总结

@RequestParam@RequestBody还是有非常大的区别的,我在将来使用这两个注解的时候会更加小心,注意两者使用情景的区别,以免造成错误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值