@RequestParam和@PathVariable区别

1. 参数位置不同

注解参数位置示例 URL
@RequestParamURL 查询字符串 (?之后)/users?name=John&age=25
@PathVariableURL 路径部分 ({}占位符)/users/{id}/orders/{orderId}

🎯 2. 核心用途不同

注解主要用途典型场景
@RequestParam获取可选或必选的查询参数过滤、排序、分页等查询条件
@PathVariable获取RESTful 资源标识符资源ID、唯一标识等路径变量

⚙️ 3. 功能特性对比

特性@RequestParam@PathVariable
是否必需可通过 required=false 设为可选默认必需(路径必须包含)
默认值支持 defaultValue不支持默认值
多值支持支持数组/集合 (如 List<String>)不支持多值(单个路径变量)
参数名称灵活性可通过 value 指定参数名必须与路径占位符名称匹配
RESTful 设计非 RESTful 核心元素RESTful 资源定位的关键组成部分

🧩 4. 代码示例对比

@RequestParam 示例:
// 获取查询参数:/search?keyword=spring&page=2
@GetMapping("/search")
public Result search(
    @RequestParam String keyword, 
    @RequestParam(defaultValue = "1") int page) {
    // ...
}
@PathVariable 示例:
// 获取路径变量:/users/123/orders/456
@GetMapping("/users/{userId}/orders/{orderId}")
public Order getOrder(
    @PathVariable Long userId,
    @PathVariable String orderId) {
    // ...
}
原则@RequestParam@PathVariable
RESTful 规范用于非资源属性用于资源标识符
幂等性不影响资源标识直接标识资源
缓存友好度查询参数不影响缓存键路径变量是缓存键的一部分
SEO 友好度对SEO不友好(动态参数)对SEO更友好(静态路径)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值