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进行接口调用:

Springboot开发请求参数的映射?_第1张图片

 调用结果:

Springboot开发请求参数的映射?_第2张图片

二、参数在请求路径上

单个参数时:

后端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进行接口调用:

Springboot开发请求参数的映射?_第3张图片

 调用结果:

多个参数时:

后端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进行接口调用:

Springboot开发请求参数的映射?_第4张图片

 调用结果:

Springboot开发请求参数的映射?_第5张图片

 三、复杂参数的映射

后端Controller层代码:(这里get或post都是可以的,我是用的post请求),复杂参数时,可以直接以对象的形式去接收参数

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

 postman进行接口调用:

Springboot开发请求参数的映射?_第6张图片

 调用结果:

Springboot开发请求参数的映射?_第7张图片

四、用@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进行接口调用:

Springboot开发请求参数的映射?_第8张图片

 调用结果:

Springboot开发请求参数的映射?_第9张图片

 五、接收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进行接口调用:

Springboot开发请求参数的映射?_第10张图片

 调用结果:

Springboot开发请求参数的映射?_第11张图片

2.接收map

后端Controller层代码:

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

  postman进行接口调用:

Springboot开发请求参数的映射?_第12张图片

  调用结果:

Springboot开发请求参数的映射?_第13张图片

 3.接收list

后端Controller层代码:

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

 postman进行接口调用:

Springboot开发请求参数的映射?_第14张图片

调用结果:

Springboot开发请求参数的映射?_第15张图片

总结:

快放假了,在这里给大家安利一段话,跨越山海,勿忘回家!回家的路上最适合听歌,那我就给大家安利一些歌曲,互换歌单。

Springboot开发请求参数的映射?_第16张图片

Springboot开发请求参数的映射?_第17张图片

 

Springboot开发请求参数的映射?_第18张图片

我是阿达,一名喜欢分享知识的程序员,时不时的也会荒腔走板的聊一聊电影、电视剧、音乐、漫画,这里已经有3159位小伙伴在等你们啦,感兴趣的就赶紧来点击关注我把,哪里有不明白或有不同观点的地方欢迎留言!

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

你可能感兴趣的:(开发问题)