在Spring Boot中,处理参数传递是开发Web应用程序时的常见任务。Spring Boot提供了多种注解,用于处理不同类型的参数传递。
常见传参注解如下:
-
@RequestParam
-
@PathVariable
-
@RequestHeader
-
@CookieValue
-
@RequestBody
1. 请求参数注解:@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”)
在controller包里面写入
@RestController
public class TestController {
@GetMapping("/getUserName")
public void getUserName(@RequestParam("name") String name){
System.out.println("userName: " + name);
}
}
-
@RequestParam 注解可以用于处理查询参数或表单参数。如果请求是通过表单提交的,则会自动从表单中获取对应的参数值。
-
在使用 @RequestParam注解时,如果请求参数与接受参数的变量名一致,则可以不用写这个注解
*2.路径参数注解: @PathVariable*
用途:用于将方法参数绑定到URL路径中的路径参数。它可以帮助我们提取URL中的动态部分并将其作为方法的参数进行处理。
*参数:*
-
value:(可选)指定路径参数的名称,用于与URL路径中的变量进行匹配。如果名称相同,则会将路径参数的值绑定到对应的方法参数上。示例:@PathVariable(“id”) Long id,其中"id"为路径参数的名称,将其值绑定到Long id参数上。
-
required:(可选):指定路径参数是否为必需的。默认情况下,@PathVariable 注解的路径参数是必需的,即必须在URL路径中提供该参数。如果设置为 false,则可以在路径中省略该参数,但在方法中将接收到 null 值。示例:@PathVariable(value = “id”, required = false) Long id。
@GetMapping("/getPathVar/{name}")
public void getPathVar(@PathVariable("name") String name){
System.out.println("userName: " + name);
}
3.头部参数注解@RequestHeader
用途:用于将方法参数绑定到 HTTP 请求的头部信息。它可以帮助我们获取特定的头部信息,并将其作为方法的参数进行处理。
*参数:*
-
value:(可选)指定头部信息的名称,用于与请求的头部信息进行匹配。如果名称相同,则会将对应的头部信息的值绑定到方法参数上。示例:@RequestHeader(“Authorization”) String token,其中 “Authorization” 是头部信息的名称,将其值绑定到 String token 参数上。
-
required:(可选)指定头部信息是否为必需的。默认情况下,@RequestHeader 注解的头部信息是必需的,即必须在请求中提供该头部信息。如果设置为 false,则可以在请求中省略该头部信息,但在方法中将接收到 null 值。示例:@RequestHeader(value = “Authorization”, required = false) String token。
-
@GetMapping("/getRequestHeader")
public void getRequestHeader(@RequestHeader("token") String token){
System.out.println("HeaderToken: " + token);
}
4.@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 = “JSESSIONID”, required = false) String JSESSIONID。
@GetMapping("/getCookieValueParam") public void getCookieValueParam(@CookieValue("JSESSIONID") String JSESSIONID){ System.out.println("JSESSIONID: " + JSESSIONID); }
在上述示例中,我们使用 @CookieValue(“JSESSIONID”) 来获取 HTTP 请求中的名为 “JSESSIONID” 的 Cookie 值,并将其绑定到方法参数 String JSESSIONID上,从而可以在方法中使用该值进行用户认证等操作。
5.请求体注解:@RequestBody
用途:用于将 HTTP 请求的主体部分绑定到方法参数上。主要用于接收并处理请求的 JSON、XML 等格式的数据。
*参数:*
-
required:(可选)指定请求主体是否为必需的。默认情况下,@RequestBody 注解的请求主体是必需的,即必须在请求中提供主体数据。如果设置为 false,则可以在请求中省略主体数据,但在方法中将接收到 null 值。示例:@RequestBody(required = false) User user。
@PostMapping("/postUser") public void postUser(@RequestBody Map<String,Object> user){ System.out.println("user: " + user); }