前言:
說是講的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