(Spring)@PathVariable 与 @RequestParam 区别与应用
在 Spring MVC 或 Spring Boot 的 Web 开发中,@PathVariable
和 @RequestParam
是两种常用的参数绑定方式,它们看起来类似,但用途和应用场景有明显区别。本篇笔记整理二者的特点、区别及实际应用场景。
一、@PathVariable
1. 定义
从 URL 路径中 提取参数。
常用于 REST 风格的 URL,表示资源的唯一标识。
2. 主要特点
参数在 URL 路径 中,例如
/project/123
。与路径模板
{}
对应。用于标识资源或层级关系。
必须提供,否则请求报错。
3. 应用场景
查询单个资源详情(如某个项目、某个用户)。
URL 设计遵循 REST 风格,例如:
/users/{userId}
→ 获取指定用户信息/projects/{projectId}
→ 获取指定项目详情
二、@RequestParam
1. 定义
从 URL 查询参数或表单参数 中获取值。
常用于可选参数、过滤条件或分页参数。
2. 主要特点
参数通常在 URL 的
?key=value
后面,例如/projects?status=ongoing&page=1
。支持可选参数和默认值。
适合传递过滤条件、排序字段、分页信息等。
3. 应用场景
列表查询、搜索或筛选功能。
分页查询(page、size)。
可选参数或条件组合查询,例如:
/projects?status=ongoing&location=Shanghai
/users?role=admin&active=true
三、二者对比总结
特性 | @PathVariable | @RequestParam |
---|---|---|
参数来源 | URL 路径 | URL 查询参数或表单 |
URL 示例 | /project/123 | /projects?status=ongoing |
是否必需 | 一般必需 | 可选(可设置默认值) |
典型用途 | 唯一资源标识 | 筛选条件、分页、排序 |
REST 风格 | 推荐 | 可搭配 REST 用于查询 |
四、使用经验
资源标识用 @PathVariable
标记唯一资源,例如用户 ID、项目 ID 等。
URL 简洁、符合 REST 风格。
查询/筛选用 @RequestParam
用于列表查询、分页、过滤或排序条件。
可组合多个参数,灵活性高。
二者可组合使用
REST API 常见组合:
/projects/{projectId}/tasks?status=completed&page=1
路径标识资源,查询参数提供筛选或分页。
💡 总结
@PathVariable
→ 路径参数,唯一资源标识@RequestParam
→ 查询参数,列表过滤与分页区分二者能让 REST API 设计更清晰、可维护性更高。