说是讲的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 sayHello(@RequestBody List list) {
return list;
}
}
postman进行接口调用:
调用结果:
快放假了,在这里给大家安利一段话,跨越山海,勿忘回家!回家的路上最适合听歌,那我就给大家安利一些歌曲,互换歌单。
我是阿达,一名喜欢分享知识的程序员,时不时的也会荒腔走板的聊一聊电影、电视剧、音乐、漫画,这里已经有3159位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言!
参考博客:https://blog.csdn.net/justry_deng/article/details/80972817