關於先後端分離使用Spring註解@RequestParam和@RequestBody 接收參數的使用場景和方式的區別

關於先後端分離使用Spring註解@RequestParam和@RequestBody 接收參數的使用場景和方式的區別 -------------------------------------僅限快速上手使用,不作原理深刻探討 環境:idea2017 jdk1,7 接口測試工具:Postman(本次使用)和Fiddler 少廢話,如今開始,看代碼

☆前臺調用代碼統一採用Content-Type:application/json,body :x-www-form-urlencoded(form表單默認的type) 1、.採用post方式 一、用@RequestParam分別接收String對象和List集合接參數 後臺代碼以下: 輸入圖片說明json

1.1 參數放在url;後端

輸入圖片說明

後臺斷點:瀏覽器

輸入圖片說明

====》測試結果:成功app

1.2 參數放在body前後端分離

輸入圖片說明

後臺: Required String parameter 'liveId' is not present ====》測試結果:失敗ide

****1簡單得出結論 POST模式下,@RequestParam接收不到body裏面的數據,但能夠接收到url裏的參數工具

二、用@RequestBody分別接收String對象和List集合接參數 後臺代碼(參數裏面通常只寫一個@RequestBody ,採用對象封裝)post

輸入圖片說明

輸入圖片說明

2.1 前臺將參數放在url上面測試

輸入圖片說明

====》失敗 錯誤信息大致就是參數不服 2.2 前臺將參數放在body區域 --------------因爲是發送json數據 後臺封裝到對象 因此採用raw類型ui

輸入圖片說明

輸入圖片說明

====>成功

****POST下 @RequestBody接收到body下json數據 接收不到url參數

二。GET模式 因爲get只在url裏面傳參數 因此忽略body

2.1GET下的@Requestparam 後臺代碼

輸入圖片說明

輸入圖片說明

前臺 輸入圖片說明

輸入圖片說明

====》成功

那麼@Requestparam呢 先來個簡單的

輸入圖片說明

輸入圖片說明

看來接收失敗了。。。繼續 將參數封裝成對象接收 輸入圖片說明

前臺

輸入圖片說明

輸入圖片說明

又是失敗!!!!!!!!!!!!!! 輸入圖片說明

一樣失敗!!!

重點來了 ; 簡單的測試得出結論; **不管get仍是post @Requestparam 都能接收到url裏面的參數但不能接收到requestbody裏面的數據 @RequestBody 只能接收body裏面的數據,對url上的參數不感冒, 因此說,兩個註解接收參數對get/post (能夠推測到put delete 等) 沒有限定,就是說接收參數和發送方式無關,和參數存在的位置有關,@RequestBody 只接受body區域的數據,而get沒法發送body數據(?),, 總之@Requestparam接收url上面的參數,@RequestBody 接收body區域的json參數,json的key值必定要雙引號哦(不加雙引號,瀏覽器能夠忽略這個錯誤,但不要依賴瀏覽器的包容性哦)!! 暫時到這吧! **

相關文章
相關標籤/搜索