您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關@RequestParam和@RequestBody怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
前端向后端傳遞參數,后端怎么去接收,就會想到 spring 的注解
之前的話,我一直用的是 RequestParam("userName") String userName 這種形式,講道理不怎么用 RequestParam String userName
無意間該去看看這兩個是有什么不同了.
@RequestParam @RequestBody (以 json 數據的形式接收)
如果不寫 @RequestParam(xxx) 注解的話,那么就前端可以有 可以沒有對應的xxx名字都行
如果有xxx名,那么就會自動匹配;
如果沒有,請求也能正確發送。
一、 @RequestParam
/** * 用戶登錄 * @param userName * @param password * @return */ @RequestMapping(value = "login", method = RequestMethod.POST) public String login(@RequestParam String userName, @RequestParam String password){ public BaseResponse login(@RequestParam("user") String userName, @RequestParam("psd") String password){
如果前端不傳 userName 或者 password 參數名的參數就會報錯
1. 用 @RequestParam 前端傳過來的參數名默認為 userName 我們String后面起的參數名
如果前端不傳 user 或者 psd 參數名的參數就會報錯
2. 用 @RequestParam("user") @RequestParam("psd"), 給前端傳遞過來的參數指定參數名
錯誤信息
3. "message":"Required String parameter 'userName' is not present"
其實還有其他的形式
看下面
@RequestParam(value="user" required=false) 這個注解
可以通過 required = false 或者 true 來要求 @RequestParam配置的前端參數是否一定要傳
required = false 表示不傳的話,會給參數賦值為 null ,required = true 就是必須要有
注意:
如果@requestParam注解的參數是int類型,并且required=false,此時如果不傳參數的話,會報錯。原因是,required=false時,不傳參數的話,會給參數賦值null,這樣就會把null賦值給了int,因此會報錯。
使用 Integer 包裝類型的話還要需要注意空指針異常
二、@RequestBody
@RequestBody 以 字符串 的形式接收前端傳過來的請求體中的 json 數據
@RequestMapping(value = "login", method = RequestMethod.POST) public String login(@RequestBody String jsonStr){
@RequestBody 以 簡單對象 接收前端傳過來的 json 數據
@RequestMapping(value = "login", method = RequestMethod.POST) public String login(@RequestBody User user){
@RequestBody以 復雜對象 接收前端傳過來的 json 數據
@RequestMapping(value = "login", method = RequestMethod.POST) public String login(@RequestBody Team team){
感謝各位的閱讀!關于“@RequestParam和@RequestBody怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。