SpringMVC注解RequestParam和RequestBody对比

一、RequestParam

1、可配置参数

required 表示是否必须,默认为 true,必须。
defaultValue 可设置请求参数的默认值。
value 为接收url的参数名(相当于key值)。

2、Content-Type

注解@RequestParam接收的参数是来自requestHeader中,即请求头。
RequestParam可以接受简单类型的属性,也可以接受对象类型。

@RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性。@RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求。
所以在postman中,要选择body的类型为 x-www-form-urlencoded,这样在headers中就自动变为了 Content-Type : application/x-www-form-urlencoded 编码格式。

如果改用 json 字符串来传值的话,类型设置为 application/json,点击发送的话,会报错或后台接收不到值,为 null。

3、示例

POST请求(使用GET请求,错误和正确示例效果一致)
在这里插入图片描述
错误示例:
(1)自定义对象接收参数
在这里插入图片描述

正确示例:
(1)map接收参数
在这里插入图片描述
(2)对应参数名接收参数
在这里插入图片描述

4、总结

(1)POST请求

(@RequestParam Map map)
application/json:json字符串部分不可用,url中的?后面添加参数可用
form-data、x-www-form-urlencoded:可用
(@RequestParam String waterEleId,@RequestParam String enterpriseName)
application/json:json字符串部分不可用,url中的?后面添加参数即可用
form-data、x-www-form-urlencoded:可用,且参数可以没有顺序
(即前端传过来的参数或者url中的参数顺序不必和后台接口中的参数顺序一致,
只要字段名相同就可以)
(@RequestParam Object object)
不管application/json、form-data、x-www-form-urlencoded都不可用

(2)GET请求

(@RequestParam Map map)
application/json:不可用
form-data、x-www-form-urlencoded:可用
(@RequestParam String id,@RequestParam String name)
application/json:不可用
form-data、x-www-form-urlencoded:可用
(@RequestParam Object object)
GET请求中不可以使用

二、RequestBody

1、可配置参数

required 表示是否必须,默认为 true,必须。

2、Content-Type

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

就application/json类型的数据而言,使用注解@RequestBody可以将body里面所有的json数据传到后端,后端再进行解析。

GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。

POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用

HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。

3、示例

POST请求(这种方式是不支持GET请求的,这里就不做演示了)
在这里插入图片描述
错误示例:
(1)对应参数名接收参数
在这里插入图片描述
正确示例:
(1)map接收参数
在这里插入图片描述
(2)自定义对象接收参数
在这里插入图片描述

4、总结

(1)POST请求

(@RequestBody Map map)
application/json:可用
form-data、x-www-form-urlencoded:不可用

(@RequestBody Object object)
application/json:可用
form-data、x-www-form-urlencoded:不可用

(2)GET请求

RequestBody -- Map / Object
GET请求中不可以使用@RequestBody

三、无注解

(Map map)
application/json:不可用
form-data、x-www-form-urlencoded:不可用

(Object object)
application/json:不可用
form-data、x-www-form-urlencoded:可用

(String id,String name)
application/json:不可用
form-data、x-www-form-urlencoded:可用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值