@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传参
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务