@PathVariable与@RequestParam

@PathVariable/@RequestParam

现在还需要写这篇文章实属惭愧,基础不牢一直是我学习途中的痛点,每次用这两个注解都要去查一次,这次一次性解决了吧

在Spring Boot中,@PathVariable@RequestParam是处理HTTP请求参数的两种常用注解:

@PathVariable

  • 作用
    URL路径模板中提取变量值,通常用于RESTful风格的URL设计,标识资源的唯一性(如ID或名称)。

  • 代码示例

    //URL示例 /users/{userId}
    @GetMapping("/users/{userId}")
    public User getUser(@PathVariable String userId) {
        // 通过userId查询用户
    }
    
  • 特点

    • 变量是URL路径的一部分,不可省略(否则路径不匹配)。
    • 适用于必填且直接关联资源的参数(如ID)。
    • 支持多级路径变量(如/a/{b}/c/{d})。

@RequestParam

  • 作用
    URL查询字符串中获取参数值,通常用于过滤、分页等非资源标识的场景。

  • 代码示例

    //URL示例:  /api/users?role=admin&page=2
    @GetMapping("/users")
    public List<User> getUsers(
        @RequestParam(required = false, defaultValue = "user") String role,
        @RequestParam(defaultValue = "1") int page
    ) {
        // 根据role和page过滤用户
    }
    
  • 特点

    • 参数附加在URL的查询字符串中(?key=value)。
    • 适用于可选或条件性参数(如排序、分页、过滤)。
    • 支持多参数组合(如?name=John&age=25)。

主要区别

特性@PathVariable@RequestParam
参数来源URL路径中的模板变量(如/{id}URL查询字符串(如?key=value
是否必填默认必填(路径必须匹配)默认非必填(可通过required=true设为必填)
适用场景标识资源(如ID、唯一名称)过滤、分页、排序等附加条件
URL结构路径的一部分(如/users/1查询参数(如/users?role=admin

总结

  • @PathVariable:用于资源标识(URL路径中的变量),参数必填。
  • @RequestParam:用于附加条件(查询字符串中的参数),参数可选或带默认值。

根据API设计的RESTful原则,优先用@PathVariable标识资源,用@RequestParam处理辅助条件。

此外,@RequestBody注解用于接收Post请求的参数体

在使用这三个注解的过程中尽量遵守规范:

  • Get使用@PathVariable/@RequestParam路径传参
  • Post用@RequestBody + DTO传参
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值