问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Spring框架中的@RequestMapping注解详解

创作时间:
作者:
@小白创作中心

Spring框架中的@RequestMapping注解详解

引用
CSDN
1.
https://blog.csdn.net/wochunyang/article/details/138992437

@RequestMapping是Spring框架中的一个核心注解,主要用于处理HTTP请求的地址映射。它属于Spring MVC框架的一部分,用于将接收到的Web请求映射到特定的处理器类或处理器方法上。本文将详细介绍@RequestMapping注解的使用方法和相关属性。

@RequestMapping介绍

官网地址:Mapping Requests :: Spring Framework

@RequestMapping是Spring框架中的一个核心注解,主要用于处理HTTP请求的地址映射。它属于Spring MVC框架的一部分,用于将接收到的Web请求映射到特定的处理器类或处理器方法上。这个注解可以被应用于控制器类的级别和方法级别。具有以下特点和用途:

类级别应用:

  • 当@RequestMapping注解应用于控制器类上时,它提供了一个基础的URI路径前缀,该类中所有使用了@RequestMapping注解的方法都将在这个基础路径下进行进一步的映射。

方法级别应用:

  • 在方法级别,@RequestMapping用于详细指定处理特定HTTP请求的方法,如GET、POST等。它可以定义更精确的URI模板来匹配请求路径,并且可以包含请求参数、HTTP方法约束等详细信息。

为了简化代码,Spring 4.3 引入了更具体的注解,如@GetMapping、@PostMapping、@PutMapping和@DeleteMapping,它们是@RequestMapping的快捷方式。例如,@GetMapping("/hello")等同于@RequestMapping(value = "/hello", method = RequestMethod.GET)。

@RequestMapping源码

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
    String name() default "";
    @AliasFor("path")
    String[] value() default {};
    @AliasFor("value")
    String[] path() default {};
    RequestMethod[] method() default {};
    String[] params() default {};
    String[] headers() default {};
    String[] consumes() default {};
    String[] produces() default {};
}

@RequestMapping属性介绍

  1. value:指定请求的 URL 路径。可以是一个或多个值,如果指定多个值,则使用数组形式。路径可以包含路径变量,这些变量可以在方法参数中通过@PathVariable注解来访问。

  2. method:指定请求的 HTTP 方法类型(如 GET、POST、PUT、DELETE 等)。可以是枚举RequestMethod的一个或多个值,如果指定多个值,则使用数组形式。

  3. params:指定请求必须满足的查询参数条件。例如,params = "param1=value1"表示请求必须包含param1参数,并且其值为value1。

  4. headers:指定请求必须满足的 HTTP 头条件。例如,headers = "Accept=application/json"表示请求的Accept头必须是application/json。

  5. consumes:指定控制器方法能够处理的请求媒体类型(Content-Type)。这可以用来限制方法只处理特定类型的请求体。

  6. produces:指定控制器方法能够产生的响应媒体类型。这可以用来指定方法的响应内容类型,例如produces = "application/json"。

  7. pathVars:指定路径变量的名称,这在某些情况下可以用于更细粒度的控制。

  8. name:为映射定义一个名称,这可以在@SessionAttributes或@InitBinder注解中使用,以引用特定的请求映射。

代码示例

// 映射到 GET 请求 /users/{id}
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
public String getUser(@PathVariable("id") Long id) {
    // ...
}

// 映射到 POST 请求 /users,并且请求体必须是 JSON 格式
@RequestMapping(value = "/users", method = RequestMethod.POST, consumes = "application/json")
public String addUser(@RequestBody User user) {
    // ...
}

// 映射到 GET 请求 /data,并且请求必须包含名为 "type" 的查询参数
@RequestMapping(value = "/data", method = RequestMethod.GET, params = "type")
public String getData(@RequestParam("type") String type) {
    // ...
}

// 映射到 /api,并且只响应 Accept 头为 "application/json" 的请求
@RequestMapping(value = "/api", headers = "Accept=application/json")
public ResponseEntity<?> getApiResponse() {
    // ...
}

使用 glob 模式和通配符来映射请求

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号