在 Spring Framework 中,@RequestMapping
注解用于将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。它是 Spring MVC 中最基本的注解之一,可以应用在类级别或方法级别。@RequestMapping
注解拥有多个属性,以下是其中的一些常用属性及其解释:
-
value / path:
- 类型:
String[]
- 描述: 用于指定请求的 URI。
value
和path
是同义词,可以互换使用,它们定义了访问该方法的哪些 URL 路径是有效的。 - 示例:
@RequestMapping(value = "/users", path = "/users") // 二选一即可
- 类型:
-
method:
- 类型:
RequestMethod[]
- 描述: 指定请求使用的 HTTP 方法(如
GET
,POST
,PUT
,DELETE
等)。 - 示例:
@RequestMapping(value = "/users", method = RequestMethod.POST)
- 类型:
-
params:
- 类型:
String[]
- 描述: 表示请求必须包含某些参数或不应包含某些参数。
- 示例:
@RequestMapping(value = "/users", params = "role=admin")
- 类型:
-
headers:
- 类型:
String[]
- 描述: 表示请求必须包含某些指定的头信息。
- 示例:
@RequestMapping(value = "/users", headers = "Content-Type=application/json")
- 类型:
-
consumes:
- 类型:
String[]
- 描述: 指定能够接受的请求内容类型(Content-Type),仅当请求的
Content-Type
与这里指定的类型匹配时,请求才会被处理。 - 示例:
@RequestMapping(value = "/users", consumes = "application/json")
- 类型:
-
produces:
- 类型:
String[]
- 描述: 指定返回的内容类型(Accept),只处理接受指定内容类型的请求。
- 示例:
@RequestMapping(value = "/users", produces = "application/json")
- 类型:
使用 @RequestMapping
时不必设置所有的属性。如果你的控制器处理所有类型的方法或者内容类型,你可以省略 method
, consumes
, 和 produces
属性。如果不需要特定的请求参数或头信息,也可以省略 params
和 headers
。
Spring 4.3 之后,为了便于使用和提高可读性,引入了几个组合注解,它们是 @RequestMapping
注解的特化版本,预设了 method
属性。这些注解分别是:
@GetMapping
(用于 GET 请求)@PostMapping
(用于 POST 请求)@PutMapping
(用于 PUT 请求)@DeleteMapping
(用于 DELETE 请求)@PatchMapping
(用于 PATCH 请求)
这些注解允许你把更专注于特定 HTTP 方法的映射,简化了语法。例如:
@GetMapping("/users") // 相当于 @RequestMapping(value = "/users", method = GET)
public List<User> getUsers() {
// ...
}
这样代码就更加简洁,同时功能和使用 @RequestMapping
注解的方式相同。