当前位置: 首页 > news >正文

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

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.dtcms.com/a/613961.html

相关文章:

  • 局部可变形模板匹配算法的初步实现
  • NFS服务
  • python多继承的类型定义了同一个属性或者方法
  • Springboot中CommandLineRunner的用法以及执行顺序的控制
  • (60页PPT)IDC云数据中心机房运维服务解决方案(附下载方式)
  • php网站开发 多少钱青海做网站最好的公司
  • 鸿蒙PC生态实践:LAME 音频编码库移植与工程化指南
  • 可以上传视频的网站建设中国科技成就手抄报
  • Redis_12_持久化(1)
  • stm32f4点灯
  • 自己做网站详细步骤电脑如何安装免费wordpress
  • 前端微前端样式隔离,CSS-in-JS方案
  • 【go.sixue.work】2.3 面向对象:结构体里的 Tag 用法
  • Halcon ROI 与图像仿射变换笔记
  • 软件设计师(软考中级)公式速记笔记
  • 电商网站开发过程手机推广app
  • 18.HTTP协议(三)
  • 产科信息管理系统,智慧产科源码,支持与医院HIS、EMR系统及国家级妇幼平台的数据对接
  • 在VPython中使用向量计算3D物体移动
  • R语言在线编译器 | 提供方便快捷的数据分析工具
  • YOLOv8多场景人物识别定位与改进ASF-DySample算法详解
  • 网网站基础建设优化知识成都感染人数最新消息
  • 电商网站建设实训要求威海好的网站建设公司哪家好
  • Ionic 安装指南
  • kubernetes 导入镜像tar包
  • 南通网站开发上海网站搭建
  • oracle 物化视图设置自动更新日志
  • Java测试题
  • YOLO v11的学习记录(五) 使用自定义数据从头训练一个实例分割的模型
  • 大模型Agent工作流设计模式深度解析:从ReAct到ReWOO的实践演进