POST/GET请求中RequestBody和RequestParam的应用场景


POST请求时
@RequestBody --> JSON字符串部分
@RequestParam --> 请求参数部分
application/json格局图

 
图一.png

form-data、x-www-form-urlencoded格局图
 
图二.png

 

1、从content-type方面总结:
① form-data、x-www-form-urlencoded:不可以用@RequestBody;可以用@RequestParam。见postman的格局,这两种方式的时候没有json字符串部分。
② application/json:json字符串部分可以用@RequestBody;url中的?后面参数可以用@RequestParam。见postman的格局

2、从两种注解方式总结:
@RequestBody

(

@RequestParam

(
(
(@RequestParam Object object) 不管application/json、form-data、x-www-form-urlencoded都不可用 

既不是@RequestBody也不是@RequestParam,没有指定参数哪种接收方式

(Map map) (Object object) application/json时候:json字符串部分不可用,url中的?后面添加参数不可用。 因为没有指定,它也不知道到底是用json字符串部分还是?后面添加参数部分,所以干脆都不可以用 form-data、x-www-form-urlencoded时都不可用,见图二 (HttpServletRequest request) application/json不可用 form-data、x-www-form-urlencoded时可用 

GET请求
@RequestBody

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

@RequestParam

(
(
(

当使用GET请求时,通过postman添加?后面的参数,不用在url中自己一个一个拼,点击Params,在下面key-value中输入就自动拼接到url中


 
GET请求问号后添加参数.png

举栗子
上传文件,包含了图中圈出来的两部分

 
图二.png

如果这样,没有@RequestParam,那么url?后的参数就拿不到

 

如果control中这样接收,本来想formData只接收url?后的参数,结果将{ "retCode": null, "data": true }这部分内容也拿到了,真实意外之喜。字符串这部分内容还可以从request中取到,见下面完整方法。

完整方法

    /** * 导入 */ 
 
 



作者:墨色尘埃
链接:https://www.jianshu.com/p/4981911d5e15


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM