一句话:@PathVariable 是把 URL 路径里的一段「占位值」取出来,交给方法参数。
看第 1 题:GET /hello/{name} 里的 {name} 是一个占位符——
它不匹配固定的字符串,而是匹配路径里的那一段。谁负责把这一段读出来?就是
@PathVariable。
@GetMapping("/hello/{name}") // {name} 是占位符
public String hello(@PathVariable String name) { // 参数名与占位符同名
return "Hello, " + name + "!";
}
访问 http://localhost:8080/hello/张三 → 返回 Hello, 张三!
别和 @RequestParam 搞混(最常混的一对):
@PathVariable取 URL 路径里的一段:/hello/张三—— 这个值标识某个东西(某个人、某个 id)@RequestParam取?后面的查询参数:/hello?name=张三—— 这个值是筛选条件,通常可选
三个坑,第 2 个几乎人人踩过:
- 名字要对上。占位符叫
{name},参数就叫name。 想不一样必须显式写:@PathVariable("name") String who - 忘记加注解 → 直接 404。路径写了
/hello/{name}, 参数却没加@PathVariable,Spring 不把它当路径变量, 结果就是匹配不上。看到 404 先检查这里。 - 大小写敏感。
{Name}和{name}是两个不同的东西。
第 4 题(进阶)里的 /api/tasks/{id} 也是同一个用法——那个 id
同样靠 @PathVariable 取。第2课会正式讲它。
三段式解释(官方定义 / 一句话大白话 / 生活类比)见 名词速查笔记 · @PathVariable。