首页 > 其他 > 详细

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

时间:2020-01-09 18:32:15      阅读:92      评论:0      收藏:0      [点我收藏+]

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

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

原文:https://www.cnblogs.com/panchanggui/p/12172332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!