1、简介
在Spring MVC中,@RequestMapping 是一个非常重要的注解,它用于映射web请求(如HTTP请求)到特定的处理器方法或处理器类。
2、 基本用法
- @RequestMapping 可以标注在方法或类上。
- 当标注在类上时,它提供了初步的请求映射信息,如请求路径的前缀。
- 当标注在方法上时,它提供了具体的请求映射信息。
- 示例(getUser 方法映射到的URL路径为 /users/{id}。):
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping("/{id}")
public String getUser(@PathVariable("id") Long id, Model model) {
// ...
return "userView";
}
}
3、 请求方法
- @RequestMapping 允许指定HTTP请求方法(如GET、POST、PUT、DELETE等)。
- 可以使用method属性或RequestMethod枚举来指定。
- 示例:
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
public String getUserById(@PathVariable("id") Long id, Model model) {
// ...
return "userView";
}
- 或者使用快捷的HTTP方法注解(如@GetMapping、@PostMapping等):
@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") Long id, Model model) {
// ...
return "userView";
}
4、参数
@RequestMapping 有几个主要的参数:
- value:用于指定请求URL的映射值。
- method:用于指定请求方法,如GET、POST等。
- params:用于指定请求参数的条件。例如,params="myParam=myValue" 只会匹配那些包含参数myParam且其值为myValue的请求。
- headers:用于指定请求头的条件。
- consumes:指定处理请求的MIME类型(如application/json)。
- produces:指定响应的MIME类型。
5、 通配符
在value属性中,你可以使用通配符来匹配URL路径。例如:
- ?:匹配一个字符。
- *:匹配零个或多个字符。
- **:匹配零个或多个目录。
6、路径变量
- 使用{variableName}的形式可以在URL路径中定义变量,这些变量可以通过@PathVariable注解在方法参数中捕获。
7、组合注解
- Spring MVC提供了多个组合注解,如@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping等,它们都是@RequestMapping的特化版本,用于更简洁地表示特定HTTP方法的映射。
8、示例
- 以下示例中getUserById 方法映射到 /api/v1/users/{id} 的GET请求,而createUser 方法映射到 /api/v1/users 的POST请求。
@RestController
@RequestMapping("/api/v1")
public class MyRestController {
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {
// ...
return user;
}
@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user) {
// ...
return ResponseEntity.created(URI.create("/api/v1/users/" + user.getId())).body(user);
}
}