【SpringBoot篇】5种类型参数传递&&json数据传参的操作
作者:mmseoamin日期:2023-12-11

🎊专栏【SpringBoot】

🍔喜欢的诗句:天行健,君子以自强不息。

🎆音乐分享【如愿】

🎄欢迎并且感谢大家指出小吉的问题🥰

文章目录

  • 🌺普通参数
  • 🌺POJO参数
  • 🌺嵌套pojo参数
  • 🌺数组参数
  • 🌺集合参数
  • 🎄json数据传参
    • 🛸json格式
    • 🛸嵌套json格式
    • 🛸集合格式

      【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第1张

      当涉及到参数传递时,Spring Boot遵循HTTP协议,并支持多种参数传递方式。这些参数传递方式可以根据请求的不同部分进行分类。

      • 路径参数(Path Parameters):

        路径参数是指在URL路径中的一部分,用于标识资源或指定操作。路径参数通常以{}的形式出现在URL中,如/users/{id},其中id就是一个路径参数。路径参数可以在URL中动态地改变,从而实现对不同资源的操作。使用路径参数时,Spring Boot使用@PathVariable注解将路径参数绑定到方法参数上。

      • 查询参数(Query Parameters):

        查询参数通常作为URL的一部分,以?开始,以key=value的形式出现,多个参数之间使用&连接,如/users?id=1&name=John。查询参数主要用于筛选或过滤资源。在Spring Boot中,可以使用@RequestParam注解将查询参数绑定到方法参数上。

      • 请求体参数(Request Body Parameters):

        请求体参数是通过HTTP请求体中发送的数据,通常用于传递复杂结构的数据,如JSON、XML等。请求体参数可以包含多个字段,并且可以表示更为复杂的数据模型。在Spring Boot中,可以使用@RequestBody注解将请求体参数绑定到方法参数上。

      • 表单参数(Form Parameters):

        表单参数通常使用HTML表单提交的数据,可以通过application/x-www-form-urlencoded或multipart/form-data格式传输。表单参数与查询参数类似,但是通常用于提交数据而不是进行筛选。在Spring Boot中,可以使用@RequestParam注解将表单参数绑定到方法参数上。

      • 请求头参数(Request Header Parameters):

        请求头参数包含在HTTP请求的头部信息中,可以用于传递附加的元数据,如鉴权信息、用户代理等。在Spring Boot中,可以使用@RequestHeader注解将请求头参数绑定到方法参数上。

        使用理论进行讲解时,我们可以了解这些参数传递方式的原理和用途。根据HTTP协议的规范和Spring Boot的设计,开发人员可以选择合适的参数传递方式来满足业务需求。这些参数传递方式在RESTful API开发中非常常见,可以用于处理各种场景下的数据传输。

        🌺普通参数

        我们在UserController类中写入这一段代码

         @RequestMapping("/commonParamDifferentname")
            @ResponseBody
            public String commonParamDifferentName(@RequestParam("name") String userName,int age){
                System.out.println("普通参数传递 userName ==> "+userName);
                System.out.println("普通参数传递 age ==> "+age);
                return "{'module':'common param different name'}";
            }
        

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第2张

        接收成功

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第3张

        🌺POJO参数

        我们在User类中写入这一段代码

        package com.example.domain;
        public class User {
            private String name;
            private int age;
            private Address address;
            @Override
            public String toString() {
                return "User{" +
                        "name='" + name + '\'' +
                        ", age=" + age +
                        ", address=" + address +
                        '}';
            }
            public Address getAddress() {
                return address;
            }
            public void setAddress(Address address) {
                this.address = address;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
        }
        

        我们在UserController类中写入这一段代码

        //POJO参数:请求参数与形参对象中的属性对应即可完成参数传递
            @RequestMapping("/pojoParam")
            @ResponseBody
            public String pojoParam(User user){
                System.out.println("pojo参数传递 user ==> "+user);
                return "{'module':'pojo param'}";
            }
        

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第4张

        运行成功

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第5张

        🌺嵌套pojo参数

        适用于下面这种,可以反复写

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第6张

        我们在Address类中写入这一段代码

        package com.example.domain;
        public class Address {
            private String province;
            private String city;
            @Override
            public String toString() {
                return "Address{" +
                        "province='" + province + '\'' +
                        ", city='" + city + '\'' +
                        '}';
            }
            public String getProvince() {
                return province;
            }
            public void setProvince(String province) {
                this.province = province;
            }
            public String getCity() {
                return city;
            }
            public void setCity(String city) {
                this.city = city;
            }
        }
        

        在UserController里面写入这一段代码

          @RequestMapping("/pojoContainPojoParam")
            @ResponseBody
            public String pojoContainPojoParam(User user){
                System.out.println("pojo嵌套pojo参数传递 user ==> "+user);
                return "{'module':'pojo contain pojo param'}";
            }
        

        继续测试

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第7张

        运行成功

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第8张

        🌺数组参数

        @RequestMapping("/arrayParam")
            @ResponseBody
            public String arrayParam(String[] likes){
                System.out.println("数组参数传递 likes ==> "+ Arrays.toString(likes));
                return "{'module':'array param'}";
            }
        

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第9张

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第10张

        运行成功

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第11张

        🌺集合参数

        @RequestMapping("/listParam")
            @ResponseBody
            public String listParam(@RequestParam List likes){
                System.out.println("集合参数传递 likes ==> "+ likes);
                return "{'module':'list param'}";
            }
        

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第12张

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第13张

        运行成功

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第14张

        🎄json数据传参

        我们在SpringMvcConfig里面加入这一段代码@EnableWebMvc,开启json数据自动转换

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第15张

        🛸json格式

        我们找到上面 集合参数 的代码,把@RequestParam修改为@RequestBody

           @RequestMapping("/listParamForJson")
            @ResponseBody
            public String listParamForJson(@RequestBody List likes){
                System.out.println("list common(json)参数传递 list ==> "+likes);
                return "{'module':'list common for json param'}";
            }
        

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第16张

        这里选择json,在下面写入数据

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第17张

        发现可以运行成功

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第18张

        🛸嵌套json格式

        @RequestMapping("/pojoParamForJson")
            @ResponseBody
            public String pojoParamForJson(@RequestBody User user){
                System.out.println("pojo(json)参数传递 user ==> "+user);
                return "{'module':'pojo for json param'}";
            }
        

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第19张

        运行成功

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第20张

        🛸集合格式

        @RequestMapping("/listPojoParamForJson")
            @ResponseBody
            public String listPojoParamForJson(@RequestBody List list){
                System.out.println("list pojo(json)参数传递 list ==> "+list);
                return "{'module':'list pojo for json param'}";
            }
        

        如果报错,重启一下就好了

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第21张

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第22张

        运行成功

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第23张

        【SpringBoot篇】5种类型参数传递&&json数据传参的操作,在这里插入图片描述,第24张