@RequestParam 和 @PathVariable区别

@RequestParam 和 @PathVariable都是 Spring MVC 中用于处理 HTTP 请求参数的两种注解,它们的主要区别如下:

1. 用途

  • @RequestParam:用于从 URL 的查询参数中获取值。

  • @PathVariable:用于从 URL 的路径中获取值。

2. URL 示例

  • @RequestParam

    /users?id=123

    这里的  id 是查询参数

  • @PathVariable

    /users/123

    这里的 123 是路径的一部分

3. 代码示例

  • @RequestParam

    @GetMapping("/users")
    public String getUser(@RequestParam("id") String userId) {
        return "User ID: " + userId;
    }

    请求 /users?id=123 会返回 User ID: 123

  • @PathVariable

    @GetMapping("/users/{id}")
    public String getUser(@PathVariable("id") String userId) {
        return "User ID: " + userId;
    }

    请求 /users/123 会返回 User ID: 123

4. 参数位置

  • @RequestParam:参数位于 URL 的查询字符串中,格式为 :url后面跟着:   key1=value1&key2=value2

  • @PathVariable:参数直接嵌入在 URL 路径中,格式为 /path/{variable}

5. 默认值

  • @RequestParam:可以通过 defaultValue 属性设置默认值。

    @RequestParam(value = "id", defaultValue = "1") String userId

  • @PathVariable:不支持默认值,路径变量必须存在。

6. 可选性

  • @RequestParam:可以通过 required = false 设置为可选参数。

    @RequestParam(value = "id", required = false) String userId
  • @PathVariable:默认是必需的,不能设置为可选。

7. 适用场景

  • @RequestParam:适用于过滤、排序、分页等场景,通常用于 GET 请求

  • @PathVariable:适用于 RESTful 风格的 URL,标识资源的唯一性。

总结

  • @RequestParam 用于获取查询参数,适合处理可选或带默认值的参数。

  • @PathVariable 用于获取路径中的变量,适合处理 RESTful 风格的 URL。

你可能感兴趣的:(java,注解)