Spring Boot 中请求参数的接收方式详解:查询参数、表单数据、路径参数与 JSON 数据

查询参数和以post方式提交的表单数据

1、查询参数:是以get请求用于地址栏中直接搜索目标地址的方式 eg:/users?page=1&size=10

2、post方式提交的表单数据(默认表单提交的 POST 数据):其在请求体中的格式也是key-value格式(key1=value1&key2=value2)

这两种方式在springboot中都可以用@RequestParam注解来接收请求参数 注意:前端发送来的请求中的参数名最好要和后端接收参数的参数名要一致,否则就要指明请求中的哪一个参数要赋值给后端

 @DeleteMapping("/depts")
 ​
 public Result delete(@RequestParam("id") Integer idcard){
     System.out.println("要删除的id是:" + idcard);
     return Result.success();
 }

这两种方式的不同点:

  • 查询参数:放在 URL 中(如 http://xxx.com?key=value),属于请求行的一部分。

  • 默认表单提交的 POST 数据:放在请求体(body)中,不属于 URL。

@RequestParam

要点:如果声明了这个注解,但是查询参数中没有这个参数,程序会报错,这个可以通过注意点二来避免,但是如果没有这个注解,参数路径中也没有这个参数,这个值就为null

场景@RequestParam 声明方式请求中无参数时的结果异常风险
场景 1@RequestParam(未指定 required)抛出MissingServletRequestParameterException存在报错风险
场景 2@RequestParam(required = false)参数值为null无异常,需处理 null 情况
场景 3未使用@RequestParam参数值为null(包装类型)无异常,需处理 null 情况

在 Spring MVC 中,@RequestParam 可以省略,但需满足以下条件:

  1. 方法参数是简单类型(如 StringInteger 等)或其数组 / 集合。

  2. 该参数在请求中必须存在

注意:当前端传递的是一个数组的时候,后端有两种方式来接收数据

方式一:

 @DeleteMapping
 public Result deleteEmpts(@RequestParam ArrayList<Integer> ids) {
     log.info("获取到的参数是:{}",  ids);
 ​
     return Result.success();
 }

用集合来接收数组的时候,@RequestParam这个注解不能省略但是后面的小括号可以省略

方式二

 @DeleteMapping
 public Result deleteEmpts( Integer[] ids) {
     log.info("获取到的参数是:{}", Arrays.toString(ids));
 ​
     return Result.success();
 }

通过一个包装类的数组来接收

路径参数

通过注解@PathVariable来获取路径参数

直接嵌入在 URL 路径中,使用 {参数名} 占位

 /users/123
 @GetMapping("/dept/{id}")
 public Result finddept(@PathVariable("id") Integer id){
     Dept dept = deptService.findDept(id);
     return Result.success(dept);
 }

当形参名和路径参数名相同的时候("id")可以省略

接收json数据

Json格式数据,要用一个实体对象来接收

规则:json格式数据的键名,要在实体对象中要有且相同,并且在前面加上注解@Requestbody

有几个参数对应实体类中就会有几个参数被赋值,其余参数都是默认值

 @PostMapping("/depts")
 public Result add(@RequestBody Dept dept){
     deptService.add(dept);
     return Result.success();
 }

总结

参数类型接收方式适用场景
查询参数@RequestParam用于 GET 请求,参数放在 URL 中,适合简单的键值对参数传递。
路径参数@PathVariable用于 URL 中嵌入参数,适合表示资源的唯一标识。
JSON 数据@RequestBody用于接收复杂的结构化数据,如对象、数组等。
表单数据@RequestParam@ModelAttribute用于 POST 请求的表单数据提交,@ModelAttribute 适合绑定表单数据到实体对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值