Spring后端接收前端传参

@PathVariable用于从URI路径中提取值,适用于请求路径变量。@RequestParam处理查询参数,解决参数不一致问题。@RequestBody用于接收前端的JSON数据,适合复杂数据类型的绑定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.@PathVariable 注解

@PathVariable 是 Spring 框架的一个注解,用于将 URI 中的变量绑定到 Spring MVC 控制器中 的方法参数。允许我们从 URI 路径中提取值并将它们映射到控制器中的方法参数。

使用场景:前端采用请求路径变量的形式.表现为 /...

例子:

@GetMapping("/{id}")
public R<Employee> getById(@PathVariable("id") Long ids){
}

当@PathVariable("id") Long id请求的路径变量和方法参数名称相同时可以省略("id")

@GetMapping("/{id}")
public R<Employee> getById(@PathVariable Long id){
}

PS:

2.@RequestParam注解

使用场景:前端采用了查询参数的形式.表现为 ?...

当controller方法中的参数名称和路径中参数名称一致时,可以省略该注解.

反之就得使用它:

eg.若前端传了http://localhost:8080/user/list?name=Tom&age=18

@GetMapping("/list")
public R<List<User>> list(@RequestParam(value = "name", required = false) String name1,
                           @RequestParam(value = "age", required = false) Integer age1) {
    return null;
}

属性:

value/name属性一致,使用与required属性有关;
required:默认为true,当为true时,若路径参数名和value/name属性名不一致时就会报错,为false时不会,这也是该注解主要用途:解决前端传递的参数与后端接收的参数不一致的问题;
defaultValue:默认值

总结:最好写的前后端对应参数名一样.

3.@RequestBody注解

使用场景:用于接收前端传递过来的json数据并进行数据绑定

主要用于接收前端发送的复杂数据类型,例如:多层嵌套的数据,或者前端发送的是一个实体对象。

比如:前端传递uesr中的某个/某些属性

@PostMapping("/test")
public R<String> test(@RequestBody User user){
log.info("接收到的数据为:{}",user);
return R.success("请求成功");
}
### 从前端后端递LIST集合参数的方式 在前后端交互中,通常通过HTTP请求(GET/POST)来实现数据输。当需要从前端后端递`List`集合类型的参数时,可以通过JSON格式化数据并将其作为请求体的一部分发送给服务器[^1]。 以下是具体实现方法: #### 后端接收 `List` 参数的示例代码 假设我们使用Java Spring Boot框架,在后端定义了一个接口用于接收前端来的`List<String>`类型的数据。 ```java @RestController @RequestMapping("/api") public class TestController { @PostMapping("/sendList") public ResponseEntity<?> receiveList(@RequestBody List<String> listItems) { if (listItems != null && !listItems.isEmpty()) { for (String item : listItems) { System.out.println("接收到的列表项:" + item); } } else { return ResponseEntity.badRequest().body("列表为空"); } return ResponseEntity.ok("成功接收列表:" + listItems.toString()); } } ``` 此代码片段展示了如何通过`@RequestBody`注解绑定前端发来的JSON数组至`List<String>`变量[^3]。 #### 前端发送 `List` 的示例代码 以下是一个基于JavaScript Fetch API的例子,演示如何构建包含`List`结构的JSON对象并通过POST请求提交到服务端。 ```javascript // 定义要发送的列表数据 let dataList = ["Item1", "Item2", "Item3"]; fetch('http://localhost:8080/api/sendList', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(dataList) // 将列表转换成JSON字符串 }) .then(response => response.json()) .then(data => console.log('Success:', data)) .catch((error) => console.error('Error:', error)); ``` 这段脚本创建了一个简单的字符串列表,并通过Fetch API以JSON格式发送到了指定URL路径下的Spring Boot控制器[^4]。 #### 数据验证与错误处理 为了确保通信过程顺利进行,需注意以下几点: - **数据序列化**:确认客户端已正确地将复杂数据结构(如数组或对象)转为标准JSON格式后再发出。 - **跨域设置**:如果前后端部署于不同域名下,则可能涉及CORS配置问题,必要时调整相应策略允许特定源访问API资源。 - **异常捕获机制**:无论是在哪一侧都应加入足够的日志记录以及用户友好的反馈提示以便快速定位潜在故障原因。 --- ### 注意事项 对于更复杂的场景比如嵌套的对象或者自定义类实例组成的集合,同样适用上述原理只是需要额外关注属性映射关系是否匹配良好[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值