@requestparam用于获取get请求url中的查询参数,支持可选参数、默认值、多值接收,并区别于@pathvariable(路径变量)和@requestbody(请求体)。

在 Spring Boot 的 REST 接口开发中,@RequestParam 是获取 HTTP 请求 URL 中查询参数(query parameters)最常用的方式,适用于 GET 请求的键值对参数,比如 /users?name=Tom&age=25。
基本用法:绑定单个查询参数
直接在控制器方法参数上使用 @RequestParam 注解,Spring 会自动从 URL 查询字符串中提取对应 key 的值并完成类型转换:
示例:
@GetMapping("/users")
public List<user> getUsers(@RequestParam String name, @RequestParam Integer age) {
return userService.findBy(name, age);
}</user>
请求:GET /users?name=Tom&age=25 → name="Tom"、age=25 自动注入。
设置参数为可选或提供默认值
查询参数通常不是必填的。可通过 required = false 或 defaultValue 控制行为:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
@RequestParam(required = false) String email:该参数不存在时传入null(注意:基本类型如int不能为null,需用包装类) -
@RequestParam(defaultValue = "0") Integer page:参数缺失或为空时使用默认值0,且自动完成类型转换 -
@RequestParam(value = "sort", defaultValue = "id") String orderBy:URL 中用sort传值,但 Java 方法里用orderBy接收
接收多个同名参数(如复选框、多值标签)
当 URL 中出现重复 key(如 ?role=ADMIN&role=USER),可用集合或数组接收:
-
@RequestParam List<string> role</string>→ 得到["ADMIN", "USER"] -
@RequestParam String[] tags→?tags=java&tags=spring解析为数组
注意:集合类型需确保泛型明确,否则可能报错;Spring 会自动去重或按顺序保留,取决于实际使用场景。
与 @PathVariable 和 @RequestBody 的区别要点
避免混淆三者用途:
-
@RequestParam:只取 URL 问号后的查询参数(?key=value),适合过滤、分页、排序等轻量条件 -
@PathVariable:取 URL 路径中的变量(如/users/{id}),用于资源定位 -
@RequestBody:读取请求体(body),常用于POST/PUT提交 JSON 数据,不适用于 GET 查询参数
GET 请求无法携带 body,所以不要试图在 GET 方法里用 @RequestBody 接收查询条件。










