注解@PathVariable的作用,和@RequestParam的区别?

本文介绍了SpringMVC框架中@PathVariable和@RequestParam注解的作用,分别用于从URL路径和查询字符串中绑定参数到控制器方法,适用于GET请求和RESTfulAPI设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Pathvariable映射URL绑定的占位符,将URL中的占位符参数绑定到控制器的方法进行入参时,URL中{xxx}占位符可以通过@Pathvariable(“XXX”)进行绑定。一般是在get请求中使用。

@RequestParam注解作用:
获取URL中携带的请求参数的值既URL中“?”后携带的参数,传递参数的格式是:key=value
如: https://localhost/requestParam/test?key1=value1&key2=value2…

@PathVariable注解作用:
用于获取URL中路径的参数值,参数名由RequestMapping注解请求路径时指定,常用于restful风格的api中,传递参数格式:直接在url后添加需要传递的值即可
如: https://localhost/pathVariable/test/value1/value2…

### @PathVariable@RequestParam区别及使用场景 #### 1. 定义与功能 - **@PathVariable** 是用于从 URL 路径中提取占位符参数的注解,通常用于 RESTful 风格的 Web 服务。它适用于表示资源路径中的变量[^2]。例如,在 `/users/{id}` 中,`{id}` 是路径的一部分,可以通过 `@PathVariable` 提取。 - **@RequestParam** 是用于从请求 URL 中的查询参数或请求体中提取参数的注解。它通常用于处理 GET POST 请求中的查询参数或表单数据[^1]。 #### 2. 使用场景 - **@PathVariable** 主要用于需要明确指定资源标识符的场景,例如获取某个特定用户的详细信息。它通过路径变量来定位资源,符合 RESTful 设计规范。例如: ```java @GetMapping("/users/{id}") public String getUserById(@PathVariable("id") int userId) { return "User ID: " + userId; } ``` 在上述代码中,`/users/123` 将会匹配到 `userId = 123`[^5]。 - **@RequestParam** 主要用于处理查询参数或表单提交的数据。它可以用于分页查询、搜索过滤等场景。例如: ```java @GetMapping("/users") public String listUsers(@RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(value = "size", defaultValue = "10") int size) { return "Page: " + page + ", Size: " + size; } ``` 在上述代码中,`/users?page=2&size=20` 将会匹配到 `page = 2` `size = 20`[^4]。 #### 3. 参数设置 - **@RequestParam** 支持设置参数是否为必填项以及默认值。例如: ```java @GetMapping("/user") public String getUserByUsername(@RequestParam(required = false, defaultValue = "anonymous") String username) { return "Query User: " + username; } ``` 在上述代码中,如果未提供 `username` 参数,则默认值为 `"anonymous"`[^3]。 - **@PathVariable** 通常不需要设置必填项或默认值,因为路径变量通常是必需的,否则无法匹配到正确的资源。 #### 4. 示例对比 | 注解 | 使用场景 | 示例 URL | 示例代码 | |-----------------|-----------------------------|--------------------------|-------------------------------------------------------------------------| | **@PathVariable** | 路径变量,RESTful 风格 | `/users/123` | `@GetMapping("/users/{id}") public String getUserById(@PathVariable("id") int userId)` | | **@RequestParam** | 查询参数或表单数据 | `/users?page=2&size=20` | `@GetMapping("/users") public String listUsers(@RequestParam("page") int page, @RequestParam("size") int size)` | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值