Spring Boot中的路径变量

发布于:2025-07-14 ⋅ 阅读:(16) ⋅ 点赞:(0)

在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 参数与方法参数的绑定。它支持多种功能,包括:​单个和多个路径变量的接收。​自动类型转换和异常处理。​可选参数和默认值的设置。​正则表达式约束,用于限制参数格式


网站公告

今日签到

点亮在社区的每一天
去签到