@RequestParam和@RequestBody的区别

来源:8-8 商品编辑之后端开发下

gliiiii

2019-11-01

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

写回答

2回答

qq_大寒_2

2019-11-04

这个最好自己可以试下,我现在后端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
共1条回复

翔仔

2019-11-01

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

1
2
翔仔
回复
gliiiii
才从飞机到住的地方,一般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
共2条回复

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程