@RequestBody 和 @RequestParam 對應前端請求數(shù)據(jù)的編碼格式

@RequestParam

用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內(nèi)容。(Http協(xié)議中土铺,如果不指定Content-Type胶滋,則默認傳遞的參數(shù)就是application/x-www-form-urlencoded類型)

RequestParam可以接受簡單類型的屬性,也可以接受對象類型悲敷, 但是復雜類型如數(shù)組則無法處理究恤。

實質是將Request.getParameter() 中的Key-Value參數(shù)Map利用Spring的轉化機制ConversionService配置,轉化成參數(shù)接收對象或字段后德。

tips

在Content-Type: application/x-www-form-urlencoded的請求中部宿,

get 方式中queryString的值,和post方式中 body data的值都會被Servlet接受到并轉化到Request.getParameter()參數(shù)集中瓢湃,所以@RequestParam可以獲取的到理张。

@RequestBody

處理HttpEntity傳遞過來的數(shù)據(jù)赫蛇,一般用來處理非Content-Type: application/x-www-form-urlencoded編碼格式的數(shù)據(jù)。

GET請求中涯穷,因為沒有HttpEntity棍掐,所以@RequestBody并不適用藏雏。

POST請求中拷况,通過HttpEntity傳遞的參數(shù),必須要在請求頭中聲明數(shù)據(jù)的類型Content-Type掘殴,SpringMVC通過使用HandlerAdapter 配置的HttpMessageConverters來解析HttpEntity中的數(shù)據(jù)赚瘦,然后綁定到相應的bean上。

總結

在GET請求中奏寨,不能使用@RequestBody起意。

在POST請求,可以使用@RequestBody和@RequestParam病瞳,但是如果使用@RequestBody磨德,對于參數(shù)轉化的配置必須統(tǒng)一没隘。

舉個例子,在SpringMVC配置了HttpMessageConverters處理棧中,指定json轉化的格式肆糕,如Date轉成‘yyyy-MM-dd’,則參數(shù)接收對象包含的字段如果是Date類型,就只能讓客戶端傳遞年月日的格式侦铜,不能傳時分秒院塞。因為不同的接口,它的參數(shù)可能對時間參數(shù)有不同的格式要求戏溺,所以這樣做會讓客戶端調用同事對參數(shù)的格式有點困惑渣蜗,所以說擴展性不高。

如果使用@RequestParam來接受參數(shù)旷祸,可以在接受參數(shù)的model中設置@DateFormat指定所需要接受時間參數(shù)的格式耕拷。

另外,使用@RequestBody接受的參數(shù)是不會被Servlet轉化統(tǒng)一放在request對象的Param參數(shù)集中托享,@RequestParam是可以的斑胜。如果想把前端的對象轉化為urlencode類型的請求參數(shù),可以使用QueryString的stringify方法進行轉化嫌吠。

綜上所述止潘,一般情況下,推薦使用@RequestParam注解來接受Http請求參數(shù)辫诅。

---------------------

作者:xinluke

來源:CSDN

原文:https://blog.csdn.net/xinluke/article/details/52710706

版權聲明:本文為博主原創(chuàng)文章凭戴,略有改動,轉載請附上博文鏈接炕矮!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末么夫,一起剝皮案震驚了整個濱河市者冤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌档痪,老刑警劉巖涉枫,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異腐螟,居然都是意外死亡愿汰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門乐纸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衬廷,“玉大人,你說我怎么就攤上這事汽绢÷鸢希” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵宁昭,是天一觀的道長跌宛。 經(jīng)常有香客問我,道長积仗,這世上最難降的妖魔是什么疆拘? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮斥扛,結果婚禮上入问,老公的妹妹穿的比我還像新娘。我一直安慰自己稀颁,他們只是感情好芬失,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匾灶,像睡著了一般棱烂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阶女,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天颊糜,我揣著相機與錄音,去河邊找鬼秃踩。 笑死衬鱼,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的憔杨。 我是一名探鬼主播鸟赫,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了抛蚤?” 一聲冷哼從身側響起台谢,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岁经,沒想到半個月后朋沮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡缀壤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年樊拓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诉位。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡骑脱,死狀恐怖菜枷,靈堂內(nèi)的尸體忽然破棺而出苍糠,到底是詐尸還是另有隱情,我是刑警寧澤啤誊,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布岳瞭,位于F島的核電站,受9級特大地震影響蚊锹,放射性物質發(fā)生泄漏瞳筏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一牡昆、第九天 我趴在偏房一處隱蔽的房頂上張望姚炕。 院中可真熱鬧,春花似錦丢烘、人聲如沸柱宦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掸刊。三九已至,卻和暖如春赢乓,著一層夾襖步出監(jiān)牢的瞬間忧侧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工牌芋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蚓炬,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓躺屁,卻偏偏與公主長得像肯夏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348