最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring中@RequestParam與@RequestBody的使用場景詳解

 更新時間:2023年12月04日 09:47:36   作者:制造bug的鍵盤鋼琴師  
這篇文章主要介紹了Spring中@RequestParam與@RequestBody的使用場景詳解,注解@RequestParam接收的參數(shù)是來自requestHeader中即請求頭或body請求體,通常用于GET請求,比如常見的url等,需要的朋友可以參考下

一、前言

一直有這么一個疑問:在使用postman工具測試api接口的時候,如何使用 json 字符串傳值呢,而不是使用 x-www-form-urlencoded 類型,畢竟通過 key-value 傳值是有局限性的。假如我要測試批量插入數(shù)據(jù)的接口呢,使用 x-www-form-urlencoded 方法根本就不適用于這種場景。

那么如何通過postman工具使用json字符串傳值呢,這里就引申出來了spring的兩個注解:

  • @RequestParam
  • @RequestBody

總而言之,這兩個注解都可以在后臺接收參數(shù),但是使用場景不一樣。繼續(xù)往下看

二、@RequestParam

先介紹一下@RequestParam的使用場景:

注解@RequestParam接收的參數(shù)是來自requestHeader中即請求頭或body(請求體)。

通常用于GET請求,比如常見的url://localhost:8081/spring-boot-study/novel/findByAuthorAndType?author=唐家三少&type=已完結(jié),其在Controller 層的寫法如下圖所示:

在這里插入圖片描述

@RequestParam有三個配置參數(shù):

  • required 表示是否必須,默認(rèn)為 true,必須。
  • defaultValue 可設(shè)置請求參數(shù)的默認(rèn)值。
  • value 為接收url的參數(shù)名(相當(dāng)于key值)。

@RequestParam用來處理 Content-Type 為 application/x-www-form-urlencoded 編碼的內(nèi)容,Content-Type默認(rèn)為該屬性。

@RequestParam也可用于其它類型的請求,例如:POST、DELETE等請求。比如向表中插入單條數(shù)據(jù),Controller 層的寫法如下圖所示:

在這里插入圖片描述

由于@RequestParam是用來處理 Content-Type 為 application/x-www-form-urlencoded 編碼的內(nèi)容的,所以在postman中,要選擇body的類型為 x-www-form-urlencoded,這樣在headers中就自動變?yōu)榱?Content-Type : application/x-www-form-urlencoded 編碼格式。

如下圖所示:

在這里插入圖片描述

但是這樣不支持批量插入數(shù)據(jù)啊,如果改用 json 字符串來傳值的話,類型設(shè)置為 application/json,點擊發(fā)送的話,會報錯,后臺接收不到值,為 null。

這時候,注解@RequestBody就派上用場了。

三、@RequestBody

先介紹一下@RequestBody的使用場景:

注解@RequestBody接收的參數(shù)是來自requestBody中,即請求體。

一般用于處理非 Content-Type: application/x-www-form-urlencoded編碼格式的數(shù)據(jù),比如:application/json、application/xml等類型的數(shù)據(jù)。

就application/json類型的數(shù)據(jù)而言,使用注解@RequestBody可以將body里面所有的json數(shù)據(jù)傳到后端,后端再進(jìn)行解析。

3.1 向表中批量插入數(shù)據(jù)

舉個批量插入數(shù)據(jù)的例子,Controller層的寫法如下圖所示:

在這里插入圖片描述

由于@RequestBody可用來處理 Content-Type 為 application/json 編碼的內(nèi)容,所以在postman中,選擇body的類型為row -> JSON(application/json),這樣在 Headers 中也會自動變?yōu)?Content-Type : application/json 編碼格式。body內(nèi)的數(shù)據(jù)如下圖所示:

在這里插入圖片描述

批量向表中插入兩條數(shù)據(jù),這里的 saveBatchNovel()方法已經(jīng)封裝了 JPA的 saveAll() 方法。body 里面的 json 語句的 key 值要與后端實體類的屬性一一對應(yīng)。

注意:前端使用$.ajax的話,一定要指定 contentType: “application/json;charset=utf-8;”,默認(rèn)為 application/x-www-form-urlencoded。

3.2 后端解析json數(shù)據(jù)

上述示例是傳遞到實體類中的具體寫法,那么如果傳遞到非實體類中,body里面的json數(shù)據(jù)需要怎么解析呢?我們再來看下面這個例子:

在body中,我們還是輸入上面的json數(shù)據(jù),根據(jù)分析,上面的json數(shù)據(jù)是一個List數(shù)組內(nèi)嵌套著map對象,那么在后臺的接收形式可寫為 List<Map<String, String>>,具體代碼如下圖所示:

在這里插入圖片描述

在這里插入圖片描述

控制臺輸出:

在這里插入圖片描述

四、總結(jié)

注解@RequestParam接收的參數(shù)是來自requestHeader中,即請求頭。

通常用于GET請求,像POST、DELETE等其它類型的請求也可以使用。

注解@RequestBody接收的參數(shù)是來自requestBody中,即請求體。

一般用于處理非 Content-Type: application/x-www-form-urlencoded編碼格式的數(shù)據(jù),比如:application/json、application/xml等類型的數(shù)據(jù)。通常用于接收POST、DELETE等類型的請求數(shù)據(jù),GET類型也可以適用。

**重點補充:

**在使用注解@RequestParam的時候【不加注解的時候效果與@RequestParam類似】,在body data中我們不能傳json字符串類型的參數(shù),否則對象中是接收不到傳遞參數(shù)相應(yīng)的值。

相應(yīng)的在@RequestBody注解標(biāo)記的形式上傳遞表格參數(shù)則會報錯。

postman模擬發(fā)送請求【@RequestParam接受json字符串】:

在這里插入圖片描述

debug斷點后頁面展示的結(jié)果:

在這里插入圖片描述

postman模擬發(fā)送請求【@RequestBody接受application/x-www-form-urlencoded表格參數(shù)】:

在這里插入圖片描述

代碼以及報錯顯示:

在這里插入圖片描述

到此這篇關(guān)于Spring中@RequestParam與@RequestBody的使用場景詳解的文章就介紹到這了,更多相關(guān)@RequestParam與@RequestBody注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring-boot中spring-boot-maven-plugin報紅錯誤及解決

    spring-boot中spring-boot-maven-plugin報紅錯誤及解決

    這篇文章主要介紹了spring-boot中spring-boot-maven-plugin報紅錯誤及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • spring boot + mybatis實現(xiàn)動態(tài)切換數(shù)據(jù)源實例代碼

    spring boot + mybatis實現(xiàn)動態(tài)切換數(shù)據(jù)源實例代碼

    這篇文章主要給大家介紹了關(guān)于spring boot + mybatis實現(xiàn)動態(tài)切換數(shù)據(jù)源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • struts2單個文件上傳的兩種實現(xiàn)方式

    struts2單個文件上傳的兩種實現(xiàn)方式

    這篇文章主要介紹了struts2單個文件上傳的兩種實現(xiàn)方式,有需要的朋友可以參考一下
    2014-01-01
  • springboot schedule 解決定時任務(wù)不執(zhí)行的問題

    springboot schedule 解決定時任務(wù)不執(zhí)行的問題

    這篇文章主要介紹了springboot schedule 解決定時任務(wù)不執(zhí)行的問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 淺談Java虛擬機(jī)對內(nèi)部鎖的四種優(yōu)化方式

    淺談Java虛擬機(jī)對內(nèi)部鎖的四種優(yōu)化方式

    這篇文章主要介紹了淺談Java虛擬機(jī)對內(nèi)部鎖的四種優(yōu)化方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 詳解springMVC容器加載源碼分析

    詳解springMVC容器加載源碼分析

    這篇文章主要介紹了詳解springMVC容器加載源碼分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • java中Callback簡單使用總結(jié)

    java中Callback簡單使用總結(jié)

    正好學(xué)習(xí)到j(luò)ava Callback,就整理了一下,希望整理的文章內(nèi)容對大家有所幫助
    2017-04-04
  • Spring之WEB模塊配置詳解

    Spring之WEB模塊配置詳解

    這篇文章主要介紹了Spring之WEB模塊配置詳解,簡單介紹了其繼承方式,代理方式,以及相關(guān)詳細(xì)配置代碼,具有一定借鑒價值,需要的朋友可以了解下。
    2017-12-12
  • 詳解Java使用雙異步后如何保證數(shù)據(jù)一致性

    詳解Java使用雙異步后如何保證數(shù)據(jù)一致性

    這篇文章主要為大家詳細(xì)介紹了Java使用雙異步后如何保證數(shù)據(jù)一致性,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以了解下
    2024-01-01
  • Mybatisplus主鍵生成策略算法解析

    Mybatisplus主鍵生成策略算法解析

    這篇文章主要介紹了Mybatisplus主鍵生成策略算法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11

最新評論

康马县| 永城市| 舒兰市| 壤塘县| 克拉玛依市| 抚州市| 东港市| 丹棱县| 丰顺县| 辽宁省| 伊金霍洛旗| 陆河县| 白沙| 鹤峰县| 无极县| 宜都市| 高雄市| 江川县| 芮城县| 潮安县| 夏河县| 永济市| 松原市| 灌阳县| 金门县| 甘孜县| 内丘县| 浦城县| 阳山县| 阳信县| 普兰县| 阳原县| 宁城县| 育儿| 万宁市| 台前县| 宁远县| 清远市| 巴彦淖尔市| 车险| 鲜城|