请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

@RequestParam和@RequestBody的区别

老师我看你在controller层获取参数的时候,有时候加了注解@RequestBody有时候加了注解@RequestParam,这两个注解有什么区别,应用场景是什么样的,还有这两个注解关于前端通过ajax传参的时候需要有什么变动或者说是区别?这两个注解是否能同时用?老师恳请详解,百度了很多,但是对于答案依然很模糊。

正在回答 回答被采纳积分+3

2回答

qq_大寒_2 2019-11-04 21:25:22

这个最好自己可以试下,我现在后端springboot全部采用@RequestBody接受post请求方式,不能接受get方式,前端采用application/json编码方式,参数都是再请求体里面的,并且请求体里面的参数要和实体类属性名要一样的。不然会报错,


比如你前端

data: {

userId: userId,

},


后端

@RequestBody Users users

实体类

private String userId;

画粗线的地方名称要对上。

@RequestParam用来接受请求,post/get请求只接受application/x-www-form-urlencoded编码,你前台自定义application/json编码就接受不到了,有些前端框架未指定编码默认就是application/json,所以要注意点。

这些框架接受参数的用法,都和编码,和请求类型有关,有些编码接受不到,有些只支持post请求比如@RequestBody

1 回复 有任何疑惑可以回复我~
  • 翔仔 #1
    感谢同学的分享:)
    回复 有任何疑惑可以回复我~ 2019-11-05 00:49:34
翔仔 2019-11-01 21:23:37

同学好,这周和下周我都在国外,只能手机答疑,这两个区别主要在于前者获取某个具体参数并且自动转换类型,第二个是从post请求里获取请求body的整体信息并作转换。

1 回复 有任何疑惑可以回复我~
  • 提问者 gliiiii #1
    老师,你这说了跟没说一样啊。这个我在百度也可以找到啊。老师我的问题要看清楚哦。
    回复 有任何疑惑可以回复我~ 2019-11-01 21:31:09
  • 翔仔 回复 提问者 gliiiii #2
    才从飞机到住的地方,一般RequestBody是用在解析json,将其转换成实体类,支持application/json, application/xml,application/x-www-form-urlencoded等contentType,而@RequestParam这个一般就是在ajax里面没有声明contentType的时候application/x-www-form-urlencoded
    能不能共存同学直接试一下,就知道当contenttype是application/x-www-form-urlencoded的时候,都是能共存的。适用的场景其实能支持的地方都能使用
    回复 有任何疑惑可以回复我~ 2019-11-02 03:50:42
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信