@RequestBoy与@RequestParam的区别

在项目中遇到POST调用接口问题,使用@RequestParam接收JSON参数时出现转换失败,因URL长度限制导致参数丢失。切换至@RequestBody则解决了该问题。
摘要由CSDN通过智能技术生成

小案例:

最近在项目中发现了一个问题:使用POST fegin调用其它模块接口时,被调用接口使用@RequestParam 进行接收一个String的json参数。但是在将参数转换为对象时发现转换失败。经断点进行查看时发现少了结束符“}”导致json转化时出错!但是在调用方进行debug查询时请求的stringjson参数是完整了。思考应该是fengin调用转递时丢失了“}”结束符。考虑后发现是因为注解@RequestParam 的问题。使用@requestParam的参数是从url上得到的。但是url会有长度限制。更换为@RequestBody 后就无此问题了。

@RequestParam

	注解@RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中。
	RequestParam可以接受简单类型的属性,也可以接受对象类型。
	@RequestParam有三个配置参数:
	required 表示是否必须,默认为 true,必须。
	defaultValue 可设置请求参数的默认值。
	value 为接收url的参数名(相当于key值)。
	@RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性。@RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求。

@RequestBody

注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值