SpringBoot中Get请求和POST请求接收参数详解

ops/2025/1/20 4:21:40/

1、Get请求

1.1 方法形参接收参数

  1. 这种方式一般适用参数比较少的情况,并且前后端参数名称必须保持一致

    @RestController
    @RequestMapping(“/user”)
    @Slf4j
    public class DemoController {

    @GetMapping("/query")
    public void getStudent(String name,String age) {log.info("name:{}",name);log.info("age:{}",age);
    }
    

    }

  2. 参数用 @RequestParam 标注,使用value属性指定参数名,required属性表示这个参数是否必传

    @RestController
    @RequestMapping(“/user”)
    @Slf4j
    public class DemoController {

    @GetMapping("/query")
    public void getStudent(@RequestParam(value = "name", required = false) String name,@RequestParam(value = "age", required = false) String age) {log.info("name:{}",name);log.info("age:{}",age);
    }
    

    }

1.2 实体类接收参数

注意:Get 请求以实体类接收参数时,不能用 RequestParam 注解进行标注,因为不支持这样的方式获取参数。

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query")public void getStudent(Student student) {log.info("name:{}",student.getName());log.info("age:{}",student.getAge());}
}@Data
class Student{private String name;private Integer age;
}

1.3 通过HttpServletRequest接收参数

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query")public void getStudent(HttpServletRequest request) {String name = request.getParameter("name");String phone = request.getParameter("age");log.info("name:{}",name);log.info("age:{}",age);}
}

1.4 通过@PathVariable接收参数

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query/{name}/{age}")public void getStudent(@PathVariable String name, @PathVariable String age) {log.info("name:{}",name);log.info("age:{}",age);}
}

1.5 接收数组参数

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query")public void getStudent(String[] names) {Arrays.stream(names).forEach(System.out::println);}
}

1.6 接受集合参数

注意:SpringBoot 接收集合参数,必须用 @RequestParam 注解声明!

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@GetMapping("/query")public void getStudent(@RequestParam List<String> names) {names.forEach(System.out::println);}
}

2、POST请求

2.1 方法形参接收参数

  1. 前后端参数名称必须保持一致

    @RestController
    @RequestMapping(“/user”)
    @Slf4j
    public class DemoController {

    @PostMapping("/save")
    public void saveStudent(String name,String age) {log.info("name:{}",name);log.info("age:{}",age);
    }
    

    }

  2. 参数用 @RequestParam 标注,使用value属性指定参数名,required属性表示这个参数是否必传

    @RestController
    @RequestMapping(“/user”)
    @Slf4j
    public class DemoController {

    @PostMapping("/save")
    public void saveStudent(@RequestParam(value = "name", required = false) String name,@RequestParam(value = "age", required = false) String age) {log.info("name:{}",name);log.info("age:{}",age);
    }
    

    }

2.2 通过HttpServletRequest接收参数

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save")public void saveStudent(HttpServletRequest request) {String name = request.getParameter("name");String phone = request.getParameter("age");log.info("name:{}",name);log.info("age:{}",age);}
}

2.3 通过@PathVariable接收参数

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save/{name}/{age}")public void saveStudent(@PathVariable String name, @PathVariable String age) {log.info("name:{}",name);log.info("age:{}",age);}
}

2.4 通过param方式提交参数,以实体类接收参数

直接以实体类可以接收param、form-data、 x-www-form-urlencoded 提交的参数

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save")public void saveStudent(Student student) {log.info("name:{}",student.getName());log.info("age:{}",student.getAge());}
}@Data
class Student{private String name;private Integer age;
}

2.5 请求体以JSON格式提交参数,通过 @RequestBody 注解接收参数

  1. 接受实体类JSON参数

    @RestController
    @RequestMapping(“/demo”)
    @Slf4j
    public class DemoController {

    @PostMapping("/save")
    public void saveStudent(@RequestBody Student student) {log.info("name:{}",student.getName());log.info("age:{}",student.getAge());
    }
    

    }

    @Data
    class Student{
    private String name;
    private Integer age;
    }

  2. 接收数组或者集合类JSON参数

    @RestController
    @RequestMapping(“/demo”)
    @Slf4j
    public class DemoController {

    @PostMapping("/save")
    public void saveStudent(@RequestBody String[] names) {Arrays.stream(names).forEach(System.out::println);
    }@PostMapping("/save")
    public void saveStudent(@RequestBody List<String> names) {names.forEach(System.out::println);
    }
    

    }

2.6 通过 Map 接收参数

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save")public void saveStudent(@RequestParam Map<String,Object> map) {log.info("name:{}",map.get("name"));log.info("age:{}",map.get("age"));}
}

2.7 通过@RequestBody 接收一个参数

@RestController
@RequestMapping("/demo")
@Slf4j
public class DemoController {@PostMapping("/save")public void saveStudent(@RequestBody String name) {log.info("name:{}",name);}
}

http://www.ppmy.cn/ops/151565.html

相关文章

CentOS 9 Stream 上安装飞书客户端

要在 CentOS 9 Stream 上安装飞书客户端&#xff0c;你可以通过以下步骤来实现&#xff1a; 步骤 1: 下载飞书的 Linux 客户端 飞书客户端没有直接在官方仓库中提供 CentOS 版本的软件包&#xff0c;但你可以从飞书官方网站下载 Linux 客户端。 打开浏览器&#xff0c;访问飞…

信安大赛-应急响应

Ubuntu应急响应 1 提交攻击者的IP地址 2 识别攻击者使用的操作系统 3 找出攻击者资产收集所使用的平台 4 提交攻击者目录扫描所使用的工具名称 5 提交攻击者首次攻击成功的时间&#xff0c;格式&#xff1a;DD /MM/YY:HH:MM:SS 6 找到攻击者写入的恶意后门文件&…

今天你学C++了吗?——C++中的STL

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

AI 音频工具合集

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏AI_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; 目录 前言: 正文: ​ 前言: 在科技蓬勃发展的时代&#xff0c;AI 音频工具宛如璀璨之星闪耀登场。它是声音的魔法师&a…

如何通过 Apache Airflow 将数据导入 Elasticsearch

作者&#xff1a;来自 Elastic Andre Luiz 了解如何通过 Apache Airflow 将数据导入 Elasticsearch。 Apache Airflow Apache Airflow 是一个旨在创建、安排&#xff08;schedule&#xff09;和监控工作流的平台。它用于编排 ETL&#xff08;Extract-Transform-Load&#xff0…

C++-第三章:模板初阶

目录 第一节&#xff1a;模板是什么 第二节&#xff1a;函数模板 2-1.使用场景 2-2.使用方法 2-3.模板原理 2-4.使用细节 第三节&#xff1a;类模板 3-1.使用场景 3-2.使用方法 3-3.类模板中成员函数的声明与定义分离 3-4.使用细节 第一节&#xff1a;模板是什么 现实生活中…

电机驱动-标准库和HAL库

一、标准库 Motor.c-标准库 #include "stm32f10x.h" // Device header #include "PWM.h"/*** 函 数&#xff1a;直流电机初始化* 参 数&#xff1a;无* 返 回 值&#xff1a;无*/ void Motor_Init(void) {RCC_APB2PeriphClockCmd…

【软件测试】用例篇

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 &#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系…