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