@PathVariable 和 @RequestParam 的区别

@PathVariableSpring MVC 中的一个注解 ,用于从 URL 路径中提取变量值,并将其绑定到方法的参数上。


例子:

java 复制代码
@GetMapping("/{id}")
public String index(@PathVariable Long id) {
    // ...
}
  • @GetMapping("/{id}") 表示这个 URL 模板中有一个路径变量 {id}
  • @PathVariable Long id 会将 URL 中的 {id} 部分转换为 Long 类型,并赋值给方法的 id 参数。

示例说明:

假设你访问的 URL 是:
http://localhost:8080/123

那么:

  • Spring 会将 123 提取出来。
  • 将其转换为 Long 类型。
  • 传递给 index 方法的 id 参数。

扩展用法:

  1. 指定变量名(如果参数名与 URL 变量名不同):

    java 复制代码
    @GetMapping("/{userId}")
    public String getUser(@PathVariable("userId") Long id) {
        // ...
    }
  2. 多个路径变量

    java 复制代码
    @GetMapping("/users/{userId}/posts/{postId}")
    public String getPost(@PathVariable Long userId, 
                          @PathVariable Long postId) {
        // ...
    }

@RequestParam 的区别:

  • @PathVariable 是从 URL 路径 中获取值(如 /users/123)。
  • @RequestParam 是从 查询参数 中获取值(如 /users?id=123)。

简单总结:

@PathVariable 用于将 URL 中的占位符(如 {id})映射到方法参数,是构建 RESTful API 时常用的注解。

相关推荐
程序员三明治1 分钟前
【体验毛坯房】Deep Harness 入门教程
java·人工智能·后端·大模型·llm·deepseek·dsh
newerp14 分钟前
Golang 切片扩容策略
后端·程序员·go
k4m7v2pz15 分钟前
用 rust-verb-shell 重写进程管理:从 game.sh 到 .rvs 的迁移实录
开发语言·后端·rust
我的div丢了肿么办19 分钟前
go中make声明切片, 修改切片,append给切片扩容,合并切片,复制切片
后端·go
Zane199431 分钟前
去重用 set 到底能快多少?实测差距接近三百倍
后端·python
未秃头的程序猿35 分钟前
一次秒杀把服务打挂了,我用Sentinel规则配置化救了回来
java·后端·spring cloud
Zane199437 分钟前
明明没删字段,反序列化却报错:都是隐式 serialVersionUID 惹的祸
java·后端
Gopher_HBo40 分钟前
beego启动流程
后端
fliter42 分钟前
Go Map 详解:键值对实际上是如何存储的
后端
万物智能42 分钟前
设备树DTS-【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
后端·算法