• Spring Boot传参注解详解


    Spring Boot传参注解详解

    在Spring Boot中,处理参数传递是开发Web应用程序时的常见任务。Spring Boot提供了多种注解,用于处理不同类型的参数传递。本篇博客将详细介绍这些注解,并提供示例说明。

    1. 路径参数注解(Path Parameter Annotations)

    @PathVariable

    • 用途:用于将方法参数绑定到URL路径中的路径参数。它可以帮助我们提取URL中的动态部分并将其作为方法的参数进行处理。
    • 参数:
      • value:(可选)指定路径参数的名称,用于与URL路径中的变量进行匹配。如果名称相同,则会将路径参数的值绑定到对应的方法参数上。示例:@PathVariable(“id”) Long id,其中"id"为路径参数的名称,将其值绑定到Long id参数上。
      • required:(可选):指定路径参数是否为必需的。默认情况下,@PathVariable 注解的路径参数是必需的,即必须在URL路径中提供该参数。如果设置为 false,则可以在路径中省略该参数,但在方法中将接收到 null 值。示例:@PathVariable(value = “id”, required = false) Long id。
    • 下面是一个使用 @PathVariable 的示例::
    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable("id") Long id) {
        // 根据id查询用户
        // 方法实现
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在上述示例中,URL路径为 “/users/{id}”,其中 “{id}” 是一个动态的路径参数。通过 @PathVariable(“id”),我们将路径参数的值绑定到方法参数 Long id 上,从而可以在方法中使用该值。

    2. 请求参数注解(Request Parameter Annotations)

    @RequestParam

    • 用途:用于将方法参数绑定到URL查询参数或表单参数。它可以帮助我们获取HTTP请求中的参数值并将其作为方法的参数进行处理。
    • 参数:
      • value:(可选)指定参数的名称,用于与URL查询参数或表单参数进行匹配。如果名称相同,则会将参数的值绑定到对应的方法参数上。示例:@RequestParam(“name”) String name,其中 “name” 为参数的名称,将其值绑定到 String name 参数上。
      • required:(可选)指定参数是否为必需的。默认情况下,@RequestParam 注解的参数是必需的,即必须在请求中提供该参数。如果设置为 false,则可以在请求中省略该参数,但在方法中将接收到 null 值。示例:@RequestParam(value = “name”, required = false) String name。
      • defaultValue:(可选)指定请求参数的默认值。当请求中未提供该参数时,将使用默认值作为方法参数的值。示例:@RequestParam(value = “page”, defaultValue = “1”) int
    • 下面是一个使用 @RequestParam 的示例:
    @GetMapping("/users")
    public User getUserByName(@RequestParam("name") String name) {
        // 方法实现
    }
    
    • 1
    • 2
    • 3
    • 4

    在上述示例中,URL中可能存在查询参数,例如 “/users?name=John”,通过 @RequestParam(“name”),我们将查询参数 “name” 的值绑定到方法参数 String name 上,从而可以在方法中使用该值。

    请注意,@RequestParam 注解可以用于处理查询参数或表单参数。如果请求是通过表单提交的,则会自动从表单中获取对应的参数值。

    @RequestHeader

    • 用途:用于将方法参数绑定到 HTTP 请求的头部信息。它可以帮助我们获取特定的头部信息,并将其作为方法的参数进行处理。
    • 参数:
      • value:(可选)指定头部信息的名称,用于与请求的头部信息进行匹配。如果名称相同,则会将对应的头部信息的值绑定到方法参数上。示例:@RequestHeader(“Authorization”) String token,其中 “Authorization” 是头部信息的名称,将其值绑定到 String token 参数上。
      • required:(可选)指定头部信息是否为必需的。默认情况下,@RequestHeader 注解的头部信息是必需的,即必须在请求中提供该头部信息。如果设置为 false,则可以在请求中省略该头部信息,但在方法中将接收到 null 值。示例:@RequestHeader(value = “Authorization”, required = false) String token。
    • 下面是一个使用 @RequestHeader 的示例:
    @GetMapping("/users")
    public User getUser(@RequestHeader("Authorization") String token) {
        // 方法实现
    }
    
    • 1
    • 2
    • 3
    • 4

    在上述示例中,我们使用 @RequestHeader(“Authorization”) 来获取 HTTP 请求头部中的 “Authorization” 信息,并将其绑定到方法参数 String token 上,从而可以在方法中使用该头部信息进行用户认证等操作。

    @CookieValue

    • 用途:用于将方法参数绑定到 HTTP 请求的 Cookie 值。它可以帮助我们获取特定的 Cookie 值,并将其作为方法的参数进行处理。
    • 参数:
      • value:(可选)指定 Cookie 的名称,用于与请求的 Cookie 进行匹配。如果名称相同,则会将对应的 Cookie 值绑定到方法参数上。示例:@CookieValue(“sessionId”) String sessionId,其中 “sessionId” 是 Cookie 的名称,将其值绑定到 String sessionId 参数上。
      • required:(可选)指定 Cookie 是否为必需的。默认情况下,@CookieValue 注解的 Cookie 是必需的,即必须在请求中提供该 Cookie。如果设置为 false,则可以在请求中省略该 Cookie,但在方法中将接收到 null 值。示例:@CookieValue(value = “sessionId”, required = false) String sessionId。
    • 下面是一个使用 @CookieValue 的示例:
    @GetMapping("/users")
    public User getUser(@CookieValue("sessionId") String sessionId) {
        // 方法实现
    }
    
    • 1
    • 2
    • 3
    • 4

    在上述示例中,我们使用 @CookieValue(“sessionId”) 来获取 HTTP 请求中的名为 “sessionId” 的 Cookie 值,并将其绑定到方法参数 String sessionId 上,从而可以在方法中使用该值进行用户认证等操作。

    3. 请求体注解(Request Body Annotations)

    @RequestBody

    • 用途:用于将 HTTP 请求的主体部分绑定到方法参数上。主要用于接收并处理请求的 JSON、XML 等格式的数据。
    • 参数:
      • required:(可选)指定请求主体是否为必需的。默认情况下,@RequestBody 注解的请求主体是必需的,即必须在请求中提供主体数据。如果设置为 false,则可以在请求中省略主体数据,但在方法中将接收到 null 值。示例:@RequestBody(required = false) User user。
    • 示例:
    @PostMapping("/users")
    public void createUser(@RequestBody User user) {
        // 方法实现
    }
    
    • 1
    • 2
    • 3
    • 4

    在上述示例中,我们使用 @RequestBody 注解将 HTTP 请求的主体部分绑定到 User 对象的参数上。Spring Boot 将自动解析请求主体中的数据,并将其转换为 User 对象,然后将其作为参数传递给方法进行处理。

    4. 路由参数注解(Routing Parameter Annotations)

    @RequestAttribute

    • 用途:用于将方法参数绑定到 HTTP 请求的属性(Attribute)上。它可以帮助我们获取特定的请求属性值,并将其作为方法的参数进行处理。
    • 参数:
      • value:(可选)指定请求属性的名称,用于与请求的属性进行匹配。如果名称相同,则会将对应的属性值绑定到方法参数上。示例:@RequestAttribute(“userId”) Long userId,其中 “userId” 是请求属性的名称,将其值绑定到 Long userId 参数上。
      • required:(可选)指定请求属性是否为必需的。默认情况下,@RequestAttribute 注解的请求属性是必需的,即必须在请求中包含该属性。如果设置为 false,则可以在请求中省略该属性,但在方法中将接收到 null 值。示例:@RequestAttribute(value = “userId”, required = false) Long userId。
    • 下面是一个使用 @RequestAttribute 的示例:
    @GetMapping("/users")
    public User getUser(@RequestAttribute("userId") String userId) {
        // 方法实现
    }
    
    • 1
    • 2
    • 3
    • 4

    在上述示例中,我们使用 @RequestAttribute(“userId”) 来获取 HTTP 请求中名为 “userId” 的请求属性值,并将其绑定到方法参数 Long userId 上,从而可以在方法中使用该值进行相应的处理。

    以上是Spring Boot中常用的参数传递注解。通过选择适当的注解,你可以方便地处理不同类型的参数传递。

    希望本篇博客对你理解和使用Spring Boot传参注解有所帮助!如果你有任何疑问或建议,请随时提出。

  • 相关阅读:
    《Linux》day1--常见文件管理命令
    Spring5应用之AOP注解编程
    git学习(一)
    ubuntu/linux系统知识(30)ubuntu系统配置项dconf/gsettings
    《工程伦理与学术道德》之《工程与伦理》
    为什么Move将超越Solidity成为主流编程语言?
    vue封装自己的组件库 03.封装input+switch组件
    SAP S/4 HANA 与R3(ECC) 的区别
    Annoy vs Milvus:哪个向量数据库更适合您的AI应用?知其然知其所以然
    【NOI模拟赛】防AK题(生成函数,单位根,Pollard-Rho)
  • 原文地址:https://blog.csdn.net/run65536/article/details/130847926