@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一,用于实现Http请求映射,实现指定请求 路径、方式、参数、请求头、Content-Type 的功能。
下面记录此注解的常用参数和SpringBoot中提供的与之有关的组合注解(@GetMapping @PostMapping 等)。
@RequestMapping 注解的位置
@RequestMapping 注解可以使用在 类 和 方法 之上 。使用在类上则本类中所有其他@RequestMapping的映射都要先满足类上注解的要求。
关于注解的使用位置,我吗可以通过源码获知,如此处的源码中(追踪注解)有如下内容:
1 |
则表示可使用于类(TYPE) 和 方法(METHOD)之上
指定请求路径与方式
可以通过指定@RequestMapping的 value属性(或path) 来指定请求路径,指定method属性 来指定请求方式。
value属性需要以String类型提供,method属性需要以RequestMethod
的枚举类型提供。接受的RequestMethod枚举类型如下:
1 | public enum RequestMethod { |
SpringBoot提供了针对请求方法的合成注解供使用:
- @PostMapping 等价于 @RequestMapping(method = RequestMethod.POST)
- @GetMapping 等价于 @RequestMapping(method = RequestMethod.GET)
- @PutMapping 等价于 @RequestMapping(method = RequestMethod.PUT)
- @DeleteMapping 等价于 @RequestMapping(method = RequestMethod.DELETE)
代码示例:
1 |
|
Tips:
- 当只指定请求路径时,不需要特别写 value 的属性名。直接写一个String类型即可。
- 当不知到属性注定所需的参数时,可以追踪源码。点击 属性名-再点击参数类型 即可看到。
指定请求参数
使用params属性指定。
可以指定 有 或 没有 某个参数:params = "参数名"
或 params = "!参数名"
。
也可以指定参数 是 或 不是 某个值:params = "参数名=参数值"
或 params = "参数名!=参数值"
代码示例:
1 |
|
指定请求头
使用headers属性指定,设置方式与指定请求参数相似。
可以指定 有 或 没有 某个请求头:headers = "请求头名"
或 headers = "!请求头名"
。
也可以指定参数 是 或 不是 某个值:params = "请求头名=请求头值"
或 params = "请求头名!=请求头值"
代码示例:
1 |
|
指定请求头的Content-Type
使用consumes属性指定,设置方式与指定请求参数相似。
也可以指定Content-Type头 是 或 不是 某个值:consumes = "Content-Type头的值"
或 consumes = "!Content-Type头的值"
代码示例:
1 |
|