注解RequestParam与RequestBody的使用场
特别说明:该专栏文章均来源自微信公众号《大数据实战演练》,欢迎关注!一、前言
一直有这么一个疑问:在使用postman工具测试api接口的时候,如何使用json字符串传值呢,而不是使用xwwwformurlencoded类型,毕竟通过keyvalue传值是有局限性的。假如我要测试批量插入数据的接口呢,使用xwwwformurlencoded方法根本就不适用于这种场景。
那么如何通过postman工具使用json字符串传值呢,这里就引申出来了spring的两个注解:RequestParamRequestBody
总而言之,这两个注解都可以在后台接收参数,但是使用场景不一样。继续往下看二、RequestParam
先介绍一下RequestParam的使用场景:
注解RequestParam接收的参数是来自requestHeader中,即请求头。通常用于GET请求,比如常见的url:http:localhost:8081springbootstudynovelfindByAuthorAndType?author唐家三少amp;type已完结,其在Controller层的写法如下图所示:
RequestParam有三个配置参数:required表示是否必须,默认为true,必须。defaultValue可设置请求参数的默认值。value为接收url的参数名(相当于key值)。
RequestParam用来处理ContentType为applicationxwwwformurlencoded编码的内容,ContentType默认为该属性。
RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求。比如向表中插入单条数据,Controller层的写法如下图所示:
由于RequestParam是用来处理ContentType为applicationxwwwformurlencoded编码的内容的,所以在postman中,要选择body的类型为xwwwformurlencoded,这样在headers中就自动变为了ContentType:applicationxwwwformurlencoded编码格式。如下图所示:
但是这样不支持批量插入数据啊,如果改用json字符串来传值的话,类型设置为applicationjson,点击发送的话,会报错,后台接收不到值,为null。
这时候,注解RequestBody就派上用场了。继续往下看三、RequestBody
先介绍一下RequestBody的使用场景:
注解RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非ContentType:applicationxwwwformurlencoded编码格式的数据,比如:applicationjson、applicationxml等类型的数据。
就applicationjson类型的数据而言,使用注解RequestBody可以将body里面所有的json数据传到后端,后端再进行解析。
3。1向表中批量插入数据
举个批量插入数据的例子,Controller层的写法如下图所示:
由于RequestBody可用来处理ContentType为applicationjson编码的内容,所以在postman中,选择body的类型为rowgt;JSON(applicationjson),这样在Headers中也会自动变为ContentType:applicationjson编码格式。body内的数据如下图所示:
批量向表中插入两条数据,这里的saveBatchNovel()方法已经封装了JPA的saveAll()方法。body里面的json语句的key值要与后端实体类的属性一一对应。
注意:前端使用。ajax的话,一定要指定contentType:applicationjson;charsetutf8;,默认为applicationxwwwformurlencoded。
3。2后端解析json数据
上述示例是传递到实体类中的具体写法,那么如果传递到非实体类中,body里面的json数据需要怎么解析呢?我们再来看下面这个例子:
在body中,我们还是输入上面的json数据,根据分析,上面的json数据是一个List数组内嵌套着map对象,那么在后台的接收形式可写为Listlt;Maplt;String,Stringgt;gt;,具体代码如下图所示:
postman请求:
控制台输出:
得出结论,通过RequestBody可以解析Body中json格式的数据。四、总结
注解RequestParam接收的参数是来自requestHeader中,即请求头。通常用于GET请求,像POST、DELETE等其它类型的请求也可以使用。
注解RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非ContentType:applicationxwwwformurlencoded编码格式的数据,比如:applicationjson、applicationxml等类型的数据。通常用于接收POST、DELETE等类型的请求数据,GET类型也可以适用。
总算把这两个的逻辑理清楚了,postman也会用json传值了!赶紧整理成笔记,与大家分享
END
码字不易,如果您觉得文章写得不错,请关注作者您的关注是我写作的最大动力
五问广汽埃安混改,洪流下不进则退关注并标星电动星球News每天打卡阅读更深刻理解汽车产业变革大概10天前,广汽集团发布了一则公告。表示拟通过对新能源汽车研发能力及业务、资产的重组整合,推进广……
专业游戏手机排名,这三款品牌深受大家喜爱,你认识多少现在的手机牌子多种多样,性能也是各有异处。有些适合打游戏,有些就不太适合,每一年都有统计数据出专业游戏手机品牌排名,你知道哪款手机在排行榜前几吗?不知道的话就快来看看下文,小编……
凌晨突发!两船碰撞,12人失联!8月30日凌晨,福建泉州深沪籍渔船闽晋渔05119在距平潭岛正东45海里海域沉没,渔船上14人遇险,两名船员被周边作业渔船闽晋渔05769救起,另外12名船员失联。福建省……
余承东评价华为Mate40Pro,网友用雷军名言回复!缺德华为每一代的Mate系列手机和p系列手机都是顶级的旗舰,销量自然是不用担心,更重要的是热度能够一直保持下去,也是目前国产手机中唯二的高端机。不过,mate40系列作为一款去年1……
浅谈自动变速箱的L档S档都有什么作用如今自动变速箱逐渐被市场所接受,毕竟交通越来越堵,走走停停是家常便饭,开手动波箱确实很遭罪,一些新手更会显得手忙脚乱,所以这个拥堵的时代,向自动变速箱妥协也是一种必然。当我们过……
挂增幅装置,外星人AW510H耳机AW521BR蓝牙接收器众所周知外星人Alienware品牌在业界是高端和顶级的代名词,旗下的产品也都有着非常个性独特的造型。最近接触到了外星人旗下一套通过悬挂外接装置,对有线耳机进行蓝牙无线升级的组……
瑞福德系严管办公用品领用,有助于降低企业成本很多企业在企业管理过程当中并不注意办公用品的领用,特别是对于一些低值易耗的办公用品,更是格外轻视。认为一支笔一个本的成本很低,员工即使多领几个能有什么成本呢?殊不知这样的想法是……
会用光用好光,洋葱工厂布朗尼摄影灯套装体验摄影是用光的艺术,想必你已经听过这句话了。光是影响照片氛围感的重要因素,充足的光线能够最大程度发挥相机性能,好的摄影师总是在第一时间找到合适的光线。如果光线不足,或者需要特殊光……
制造业的云服务器如何选?【新网云资讯】在5G、物联网、人工智能等技术的应用下,产品实体正在成为数字化服务的载体。这也使得越来越多的数据产生在远离数据中心的边缘端,促使企业IT向着边缘端延伸来提供智能服……
IT精英巅峰对决,智慧点亮软件之光IT精英巅峰对决,智慧点亮软件之光大连高新区首届IT职业技能大赛举行决赛暨颁奖典礼5月31日,大连高新区首届IT职业技能大赛决赛暨颁奖典礼在高新区创业DNA咖啡厅举……
蝴蝶兰花期后的修剪方法,如何才能更快的复花?蝴蝶兰开花特别漂亮,就像一朵朵各色的蝴蝶在枝条上翩翩起舞,而且它的花朵很大,花色艳丽,而且花期很长,所以也深受人们的喜爱,在春节是很重要的年宵花。蝴蝶兰开完花之后,要把它的花梗……
教育部新增37个本科专业!这一领域涉及的最多!原子同学教育部3月1日公布2020年度普通高等学校本科专业备案和审批结果的通知。在经过对高等学校专业设置与教学指导委员会评议后,于日前确定了同意设置的备案专业、国家控制布点专业和新增目……