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