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

发布了98 篇原创文章 · 获赞 917 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/jdk_wangtaida/article/details/103871603