@RequestMapping
是 Spring MVC 中的一个非常重要的注解,用于将 HTTP 请求映射到特定的处理类或方法上。这个注解允许开发者定义哪些请求应该由哪些方法来处理,并且可以指定多种请求属性,如请求的 URL、HTTP 方法等。
详细解释
1. 注解定义
@RequestMapping
是一个复合注解,可以应用于类或方法级别。它提供了一个灵活的方式来定义请求映射规则。Spring Boot 中常用的 @GetMapping
、@PostMapping
、@PutMapping
和 @DeleteMapping
等注解实际上是 @RequestMapping
的子注解,它们预设了一些参数来简化开发过程。
2. 注解参数
@RequestMapping
注解有几个关键参数:
- value 或 path:这是最常用的参数之一,用于指定请求的 URL 模式。它可以是一个字符串,也可以是一个字符串数组。
- method:指定 HTTP 方法,如
GET
、POST
、PUT
、DELETE
等。 - params:指定请求参数的条件,只有满足这些条件的请求才会被映射到该方法上。
- headers:指定请求头的条件,只有满足这些条件的请求才会被映射到该方法上。
- consumes:指定请求体的内容类型(Content-Type),只有符合这些内容类型的请求才会被映射到该方法上。
- produces:指定响应的内容类型(Content-Type),只有能够产生这些内容类型的请求才会被映射到该方法上。
3. 应用示例
在 UserController
类中,@RequestMapping
注解被应用在类级别:
@RestController
@RequestMapping("/api/users")
public class UserController {
// ...
}
这里 @RequestMapping("/api/users")
声明了一个基础路径,表示这个类中的所有方法都将处理以 /api/users
开头的请求。这意味着,任何以 /api/users
为前缀的 URL 都会被这个控制器类处理。
4. 方法级映射
在 UserController
类中,每个方法也有自己的映射注解:
@PostMapping("/create")
public ResponseEntity<User> createUser(@RequestBody User user) {
// ...
}