Spring Boot中的路径变量
在Spring Boot中,路径变量(Path Variable)通过 @PathVariable 注解实现URL参数与方法参数的绑定,是构建RESTful API的核心工具。
一. 基本用法与参数映射
1.路径定义
在URL路径中用 {} 包裹变量名,例如:
@GetMapping("/users/{userId}")
2.参数绑定
- - 默认映射:当参数名与路径变量名一致时,可以省略路径变量名 ,例如:
@GetMapping("/users/{userId}")public User getUser(@PathVariable Long userId) {// 业务逻辑}
- - 显式指定:若参数名与变量名不同,通过 @PathVariable("变量名") 指定,例如:
@GetMapping("/users/{userId}")public User getUserById(@PathVariable("userId") Long id) {// 业务逻辑}
二.多参数接收
在方法中多次使用 @PathVariable 接收多个参数,例如:
@GetMapping("/users/{userId}/orders/{orderId}")
public Order getOrder(
@PathVariable Long userId,
@PathVariable Long orderId) {
// 业务逻辑
}
三、类型转换
- - 自动转换:Spring Boot会自动将路径变量的字符串值转换为方法参数的类型,支持基本数据类型(如 int 、 long )、包装类(如 Integer 、 Long )、 String 等。
- - 异常处理:若类型转换失败,Spring Boot会抛出 TypeMismatchException 异常,可通过自定义异常处理器进行处理。
四. 可选参数与默认值
1.非必填参数
通过 @PathVariable(required = false) 设置参数为可选,未传值时参数值为 null ,例如:
@GetMapping("/users/{id}/info")public UserInfo getUserInfo(@PathVariable("id") Long id,@PathVariable(required = false) String type) {// 业务逻辑}
2.默认值设置
使用 @PathVariable(defaultValue = "默认值") 指定默认值,当未传值时使用该默认值,例如:
@GetMapping("/page/{pageNum}")public List<User> getUsers(@PathVariable(defaultValue = "1") int pageNum) {// 业务逻辑}
五. 正则表达式约束
通过 {变量名:正则表达式} 限制参数格式,例如:
@GetMapping("/images/{name:\\d{4}-\\d{2}-\\d{2}\\.jpg}") // 匹配YYYY-MM-DD.jpg格式public Image getImage(@PathVariable String name) {// 业务逻辑}
六、总结
路径变量是 Spring Boot 中构建 RESTful API 的重要工具,通过 @PathVariable 注解实现 URL 参数与方法参数的绑定。它支持多种功能,包括:单个和多个路径变量的接收。自动类型转换和异常处理。可选参数和默认值的设置。正则表达式约束,用于限制参数格式