獲取參數
SpringBoot提供的獲取參數注解包括:@PathVariable,@RequestParam,@RequestBody,三者的區別如下表:
?
一:后端接口什么都不加
?
postman請求后端接口
?
?
二:后端接口加@RequestParam
POST請求
@RequestParam:
① 用來處理(前端)Content-Type: 為 application/x-www-form-urlencoded或者form-data編碼的內容
② 該注解有兩個屬性: value、required; value用來指定要傳入值的id名稱,required用來指示參數是否必須綁定;
注意這里Headers里不能以application/json作為Content-type,否則后臺也接收不到請求
@RequestParam?來自于requestHeader中,即請求頭,但是卻不是JSON,這個一般就是在ajax里面沒有聲明(別人調用)contentType的時候,為默認的
使用如下代碼可以正常進入斷點
postman中使用form-data方式
postman中使用application/x-www-form-urlencoded方式
?
?
get請求:
@RequestParam:
?
三:后端接口加@RequestBody
@RequestBody
1:
① 該注解常用來處理Content-Type: 不是application/x-www-form-urlencoded編碼的內容,例如application/json, application/xml等;
前端規定的是raw方式,那么就需要使用@RequestBody接收參數,注意這里Headers里需要以application/json作為Content-type
@Requestbody?來自于requestBody中,即請求體中。當前端或者別人傳入JSON數據給你時,使用此注解,就已將傳入給你的字段或者屬性將與你所創建的實體類綁定到一起,不相信的可以Debug測試看看傳入參數是否在這個實體里面。
可以正常進入斷點
postman中使用raw? ?json方式
?
?
2:也可以使用map接收
后臺數據接收 RequestBody 使用圖
當前端或者別人傳給你參數與你自己所對應的實體不相符合的時,或者別人傳的參數過多又與你當前實體類的屬性不符合時,那么你就需要Map去接收,因為JSON數據不是K,V嗎?所以我們用Map去裝它,情況如下
postman請求
?
?
?
三:后端接口加?@PathVariable
@PathVariable?模板變量,一般用于get請求,?即 XXX/{XXXid}, 這時的XXXid可通過 @Pathvariable注解綁定它傳過來的值到方法的參數上,情況如下。
postman請求,直接在url上輸入傳入的值