Springboot開發請求參數的映射?

前言:

說是講的springboot開發如何接收前端參數,其實大部分還是springmvc的那些東西,有個別屬於springboot的註解可能加強了效果,但是並不多。這篇博客主要從springboot開發時參數映射的幾種情況展開,不涉及到源碼解析。

閱讀前的一些知識講解:

1.@RestController註解的作用就是相當於 @Controller + @ResponseBody 合在一起的作用。

2.@RequestBody主要用來接收前端傳遞給後端的json字符串中的數據的(請求體中的數據的);GET方式無請求體,所以使用@RequestBody接收數據時,前端不能使用GET方式提交數據,而是用POST方式進行提交。在後端的同一個接收方法裏,@RequestBody與@RequestParam()可以同時使用,@RequestBody最多隻能有一個,而@RequestParam()可以有多個。

3.一個請求,只有一個RequestBody;一個請求,可以有多個RequestParam。

4.當同時使用@RequestParam()和@RequestBody時,@RequestParam()指定的參數可以是普通元素、
       數組、集合、對象等等(即:當,@RequestBody 與@RequestParam()可以同時使用時,原SpringMVC接收
       參數的機制不變,只不過RequestBody 接收的是請求體裏面的數據;而RequestParam接收的是key-value
       裏面的參數,所以它會被切面進行處理從而可以用普通元素、數組、集合、對象等接收)。

正文:

一、簡單參數的映射

後端Controller層代碼:(這裏get或post都是可以的,我是用的post請求)

@RestController
@RequestMapping("/hello")
public class ParamController {
    @RequestMapping(value = "/dada", method = RequestMethod.POST)
    public String sayHello(String name,Integer age) {
        return "name:" + name+"----------"+"age:" + age ;
    }
}

 postman進行接口調用:

 調用結果:

二、參數在請求路徑上

單個參數時:

後端Controller層代碼:(這裏get或post都是可以的,我是用的post請求)

@RestController
@RequestMapping("/hello")
public class ParamController {
    @RequestMapping(value = "/dada/{id}", method = RequestMethod.GET)
    public String sayHello(@PathVariable("id") Integer id) {
        return "id:" + id ;
    }
}

postman進行接口調用:

 調用結果:

多個參數時:

後端Controller層代碼:

@RestController
@RequestMapping("/hello")
public class ParamController {
    @RequestMapping(value = "/dada/{name}/{age}", method = RequestMethod.GET)
    public String sayHello(@PathVariable("name") String name,@PathVariable("age") Integer age) {
        return "name:" + name+"----------"+"age:" + age ;
    }
}

postman進行接口調用:

 調用結果:

 三、複雜參數的映射

後端Controller層代碼:(這裏get或post都是可以的,我是用的post請求),複雜參數時,可以直接以對象的形式去接收參數

@RestController
@RequestMapping("/hello")
public class ParamController {
    @RequestMapping(value = "/dada", method = RequestMethod.POST)
    public User sayHello(User user) {
        return user;
    }
}

 postman進行接口調用:

 調用結果:

四、用@RequestParam去接收參數時,前端請求的參數可以與執行參數名不一致

後端Controller層代碼:

@RestController
@RequestMapping("/hello")
public class ParamController {
    @RequestMapping(value = "/dada", method = RequestMethod.POST)
    public  String sayHello(@RequestParam("username") String name,@RequestParam("userage") String age) {
        return name+"----------"+age;
    }
}

postman進行接口調用:

 調用結果:

 五、接收json數據

1.接收json對象

後端Controller層代碼:

@RestController
@RequestMapping("/hello")
public class ParamController {
    @RequestMapping(value = "/dada", method = RequestMethod.POST)
    public  User sayHello(@RequestBody User user) {
        return user;
    }
}

 postman進行接口調用:

 調用結果:

2.接收map

後端Controller層代碼:

@RestController
@RequestMapping("/hello")
public class ParamController {
    @RequestMapping(value = "/dada", method = RequestMethod.POST)
    public  Map sayHello(@RequestBody Map map) {
        return map;
    }
}

  postman進行接口調用:

  調用結果:

 3.接收list

後端Controller層代碼:

@RestController
@RequestMapping("/hello")
public class ParamController {
    @RequestMapping(value = "/dada", method = RequestMethod.POST)
    public  List<String> sayHello(@RequestBody List<String> list) {
        return list;
    }
}

 postman進行接口調用:

調用結果:

總結:

快放假了,在這裏給大家安利一段話,跨越山海,勿忘回家!回家的路上最適合聽歌,那我就給大家安利一些歌曲,互換歌單。

 

我是阿達,一名喜歡分享知識的程序員,時不時的也會荒腔走板的聊一聊電影、電視劇、音樂、漫畫,這裏已經有3159位小夥伴在等你們啦,感興趣的就趕緊來點擊關注我把,哪裏有不明白或有不同觀點的地方歡迎留言!

參考博客:https://blog.csdn.net/justry_deng/article/details/80972817

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章