我們在學習的過程中會發現有時候不加@RequestParam也沒有關係,照樣可以獲取到前端傳過來的參數,加上了似乎也沒啥用,那麼到底加不加呢。下面實驗一下不加的時候和加的時候有啥區別,相信就明白了到底用不用加。
不加的時候
@GetMapping("/request")
@ResponseBody
public String test01(String name){
String returnValue = "返回的字符串爲:"+name;
return returnValue;
}
分三種請求:
①不帶參數直接請求
返回null
②帶正確參數請求
返回我們發送的參數對應的值。
③帶錯誤參數(參數名不一致)
還是返回null,後臺對我們傳過來的參數名不一致也是認爲我們沒有傳參的,這和Java的通過類型來判斷是不一樣的。
加上
@GetMapping("/request")
@ResponseBody
public String test01(@RequestParam(value = "haha") String name){
String returnValue = "返回的字符串爲:"+name;
return returnValue;
}
還是分三種情形來分析,注意上面的參數名不一致,一個是haha
,一個是name
。
①不帶參數
前端已經報錯,後臺一切正常。爲什麼呢?
@RequestParam(required = false)還有一個參數required
,默認爲true,要求我們必須傳參數。設置爲false之後,效果如下:
②傳的參數名爲haha
後臺接收到了參數,並正常返回。
③傳的參數名爲name
後臺沒有接收到參數。
通過分析得出如下結論:
- @RequestParam默認要求必須傳參,可以通過設置
required = false
來關閉 - 如果爲@RequestParam設置參數名,以他爲準,不設置的話默認爲其後的類型參數名