spring mvc注解@RequestMapping的作用及属性

您所在的位置:网站首页 磨砂膏的作用及用法 spring mvc注解@RequestMapping的作用及属性

spring mvc注解@RequestMapping的作用及属性

2023-08-07 00:52| 来源: 网络整理| 查看: 265

目录

一、@RequestMapping注解的作用是什么?

 二、@RequestMapping注解的属性有哪些?

一、@RequestMapping注解的作用是什么? @RequestMapping注解是web应用程序中最常被用到的注解之一,作用就是映射URL路径,将http的请求地址映射到控制器(controller)类的处理方法上。@RequestMapping注解可以定义在控制器类上,也可以定义在类里面的方法上。

          定义类上:将http请求映射到该控制器上,规定初步的请求映射地址,相当于请求地址的父路径。

          定义类方法上:进一步指定到控制器处理方法的映射关系,如果在控制器类上没有定义@RequestMapping注解,则直接将请求地址映射到处理方法上。

示例代码:

@RestController @RequestMapping(value = "/api/v1/rabbit") public class RabbitMqController { private static final Logger logger = LoggerFactory.getLogger(RabbitMqController.class); @Resource private RabbitMqService rabbitMqService; @RequestMapping(value = "/addexchange") public Object addExchange(@RequestBody RabbitExchange rabbitExchange) { logger.info("声明rabbit交换器接口成功,请求参数为:{}",JSONObject.toJSONString(rabbitExchange)); Exchange exchange = rabbitMqService.createExchange(rabbitExchange); logger.info("创建rabbit交换器成功,返回参数为:{}",exchange); return exchange; } }

 注意:当在类上定义映射地址为"/api/v1/rabbit",方法上定义映射地址为"/addexchange",那么此时请求地址是http://127.0.0.1:8081/wstro-web/api/v1/rabbit/addexchange,如果去掉类上的@RequestMapping(value = "/api/v1/rabbit"),那么此时请求地址是http://127.0.0.1:8081/wstro-web/addexchange

 二、@RequestMapping注解的属性有哪些?

@RequestMapping注解的属性有六种,分别是value、method、produces、consumes、header、params。这六种属性是与的关系,联合使用会使请求地址的映射更加精确。

value:指定请求的实际地址,像/action/info这样的。method:指定请求的method类型, GET、POST、PUT、DELETE等。produces:它的作用是指定返回内容的类型,只有当request请求头中Accept属性包含该produces指定的类型才能返回数据成功。注意:请求头中国Accept代表发送端(客户端)希望接受的数据类型,比如:Accept:text/xml(application/json),代表客户端希望接受的数据类型是xml(json)类型。consumes:它的作用是指定request请求提交的内容类型(Content-Type),例如application/json, text/html。注意:Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型,比如:Content-Type:text/html(application/json),代表发送端发送的数据格式是html(json)。params:指定request请求地址中必须包含某些参数值,才让该方法处理。当使用params属性时,你可以让多个处理方法处理同一个URL请求地址,只需要设置请求地址的参数不同即可。支持简单的表达式:

    ----params = "params1":表示请求必须包含名为params1的请求参数;     ----params = "!params1":表示请求不能包含名为params1的请求参数;     ----params = "params1 != value1":表示请求必须包含名为params1的请求参数,但是其值不能是value1;     ----params = {"params1 = value1", "param2"}:表示请求必须包含名为params1和params2两个请求参数,且params1的值必须为value1;

     6.header:指定request请求中必须包含某些指定的请求头header的值,才能让该方法处理请求。     示例代码:

@RestController @RequestMapping(value = "/api/v1/rabbit") public class RabbitMqController { private static final Logger logger = LoggerFactory.getLogger(RabbitMqController.class); @Resource private RabbitMqService rabbitMqService; @RequestMapping(value = "/addexchange", method = RequestMethod.POST, consumes="application/json", produces="application/json", params = {"params=true"}, headers = {"Host=127.0.0.1"}) public Object addExchange(@RequestBody RabbitExchange rabbitExchange) { logger.info("声明rabbit交换器接口成功,请求参数为:{}",JSONObject.toJSONString(rabbitExchange)); Exchange exchange = rabbitMqService.createExchange(rabbitExchange); logger.info("创建rabbit交换器成功,返回参数为:{}",exchange); return exchange; } }

说明:该代码示例中,@RequestMapping设置了父路径和子路径,value = "/addexchange"是子路径;method属性设置了POST请求方式,发送端设置实体数据的数据类型为consumes="application/json",produces指定的返回数据类型为application/json,params属性设置params=true,也就是说请求地址中必须要带着params=true参数;请求头header属性设置Host=127.0.0.1,必须本地请求才能请求成功,远程请求会失败。

 

     



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3