1、場景和原因
在實際的業務場景中,很可能需要使用@RequestBody來綁定GET請求參數。
但是由於GET的參數是通過Url方式傳遞的,而不是請求體傳遞的所以無法通過@RequestBody註解來接收。
https://stackoverflow.com/questions/34956899/does-spring-requestbody-support-the-get-method
其實從註解的英文單詞上也很容易理解@RequestBody顯然是用來接收請求體的,GET沒有,顯然就接不到。
@RequestParam的意思是請求參數,不管是GET還是POST參數都可以接收到。
2、解決方案
如果想綁定到複雜對象上,可以將GET轉爲POST方式。
也可以通過多個@RequestParam接收後組裝成對象。
還有一個解決方案是我的另外一篇文章“SpringBoot Controller 中使用多個@RequestBody的正確姿勢”
不僅支持GET和POST方式,並且支持多個對象的綁定。