全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-18 5 分钟 ✍️ juanwangdev

Spring MVC @PathVariable注解

@PathVariable 将 URL 路径变量绑定到方法参数,常用于 RESTful API 设计。

基本用法

Java
@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id) {
    return "user/detail";
}

// URL: /user/123 → id = 123

注解属性

属性类型说明
value/nameString路径变量名
requiredboolean是否必填,默认 true

指定变量名

Java
@GetMapping("/user/{userId}")
public String getUser(@PathVariable("userId") Long id) {
    return "user/detail";
}

多个路径变量

Java
@GetMapping("/user/{userId}/order/{orderId}")
public String getOrder(
    @PathVariable Long userId,
    @PathVariable Long orderId) {
    return "order/detail";
}

// URL: /user/1/order/100 → userId=1, orderId=100

可选路径变量

Java
@GetMapping({"/user", "/user/{id}"})
public String user(@PathVariable(required = false) Long id) {
    if (id == null) {
        return "user/list";
    }
    return "user/detail";
}

正则表达式约束

Java
@GetMapping("/user/{id:\\d+}")
public String getUser(@PathVariable Long id) {
    // 只匹配数字
    return "user/detail";
}

@GetMapping("/user/{name:[a-zA-Z]+}")
public String getByName(@PathVariable String name) {
    // 只匹配字母
    return "user/detail";
}

Map 类型接收

Java
@GetMapping("/user/{id}/order/{orderId}")
public String getOrder(@PathVariable Map<String, String> vars) {
    // vars = {id: "1", orderId: "100"}
    return "order/detail";
}

RESTful 风格示例

Java
@RestController
@RequestMapping("/api/users")
public class UserApiController {

    @GetMapping
    public List<User> list() {
        return userService.findAll();
    }

    @GetMapping("/{id}")
    public User get(@PathVariable Long id) {
        return userService.findById(id);
    }

    @PostMapping
    public User create(@RequestBody User user) {
        return userService.save(user);
    }

    @PutMapping("/{id}")
    public User update(@PathVariable Long id, @RequestBody User user) {
        user.setId(id);
        return userService.save(user);
    }

    @DeleteMapping("/{id}")
    public void delete(@PathVariable Long id) {
        userService.delete(id);
    }
}

与 @RequestParam 对比

注解数据来源URL 示例
@PathVariableURL 路径/user/123
@RequestParam查询参数/user?id=123

路径变量不能为空,required=false 只是允许可选路径,需配合多路径映射。

要点总结

  • @PathVariable 绑定 URL 路径变量
  • 支持正则表达式约束格式
  • required=false 配合多路径实现可选
  • 是 RESTful API 设计的核心注解

📝 发现内容有误?点击此处直接编辑

← 上一篇 Spring MVC @ExceptionHandler注解
下一篇 → Spring MVC @RequestMapping注解
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库