Spring Boot 中常用的注解@RequestParam

Spring Boot 中常用的注解@RequestParam

@RequestParam 是 Spring Framework 和 Spring Boot 中常用的注解之一,用于从请求中获取参数值。它通常用于处理 HTTP 请求中的查询参数(query parameters)或表单数据。下面详细解释 @RequestParam 的用法:

@RequestParam 的主要用法如下:

  1. 基本用法

    使用 @RequestParam 注解,您可以将请求中的参数绑定到方法的参数。例如,假设您有一个请求 URL http://example.com/api/user?id=123,您可以使用 @RequestParam 来获取 id 参数的值:

    java 复制代码
    @GetMapping("/api/user")
    public String getUserInfo(@RequestParam("id") int userId) {
        // 使用 userId 值来执行操作
        return "User ID: " + userId;
    }

    在这个示例中,@RequestParam("id") 用于将 HTTP 请求中名为 id 的参数的值绑定到 userId 方法参数上。

  2. 默认值

    您可以为 @RequestParam 指定一个默认值,以便在参数未出现在请求中时使用默认值:

    java 复制代码
    @GetMapping("/api/user")
    public String getUserInfo(@RequestParam(name = "id", defaultValue = "1") int userId) {
        // 如果请求中没有 id 参数,userId 将默认为 1
        return "User ID: " + userId;
    }
  3. 多个参数

    您可以使用多个 @RequestParam 注解来获取多个参数值:

    java 复制代码
    @GetMapping("/api/user")
    public String getUserInfo(@RequestParam("id") int userId, @RequestParam("name") String userName) {
        // 使用 userId 和 userName 执行操作
        return "User ID: " + userId + ", User Name: " + userName;
    }
  4. Map 接收多个参数

    如果您不知道参数的名称或希望一次接收多个参数,可以将参数封装到一个 Map 中:

    java 复制代码
    @GetMapping("/api/user")
    public String getUserInfo(@RequestParam Map<String, String> params) {
        String id = params.get("id");
        String name = params.get("name");
        // 使用 id 和 name 执行操作
        return "User ID: " + id + ", User Name: " + name;
    }
  5. 数组接收多个参数

    您还可以将多个参数绑定到数组或列表中:

    java 复制代码
    @GetMapping("/api/users")
    public String getUsersInfo(@RequestParam("id") int[] userIds) {
        // userIds 是一个整数数组,包含了请求中的所有 id 参数值
        return "User IDs: " + Arrays.toString(userIds);
    }

总之,@RequestParam 注解是用于从 HTTP 请求中获取参数值的非常有用的注解,它允许您轻松地处理查询参数或表单数据,并将它们绑定到方法的参数上,以便在 Spring Boot 应用程序中进行处理。

相关推荐
皙然16 分钟前
深入拆解MESI协议:从原理到实战,搞懂CPU缓存一致性的核心机制
java·缓存
愤豆21 分钟前
02-Java语言核心-语法特性-注解体系详解
java·开发语言·python
晴栀ay35 分钟前
Generator + RxJS 重构 LLM 流式输出的“丝滑”架构
javascript·后端·llm
下次一定x39 分钟前
深度解析 Kratos 客户端服务发现与负载均衡:从 Dial 入口到 gRPC 全链路落地(下篇)
后端·go
x-cmd44 分钟前
[x-cmd] 终端里的飞书:lark-cli,让 AI Agent 拥有“实体办公”能力
java·人工智能·ai·飞书·agent·x-cmd
吾日三省Java1 小时前
SpringBoot锁设计:让你的系统不再“抢”出问题!
java·spring boot·设计思路
XXOOXRT1 小时前
Ubuntu搭建Java项目运行环境(JDK17+MySQL8.0)超详细教程
java·linux·mysql·ubuntu
m0_719084111 小时前
启动命令111
java
客卿1231 小时前
用两个栈实现队列
android·java·开发语言
java1234_小锋1 小时前
Java高频面试题:谈谈你对SpringBoot的理解?
java·开发语言·spring boot