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

目录

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

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


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

  1. @RequestMapping注解是web应用程序中最常被用到的注解之一,作用就是映射URL路径,将http的请求地址映射到控制器(controller)类的处理方法上。
  2. @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。这六种属性是与的关系,联合使用会使请求地址的映射更加精确。

  1. value:指定请求的实际地址,像/action/info这样的。
  2. method:指定请求的method类型, GET、POST、PUT、DELETE等。
  3. produces:它的作用是指定返回内容的类型,只有当request请求头中Accept属性包含该produces指定的类型才能返回数据成功。注意:请求头中国Accept代表发送端(客户端)希望接受的数据类型,比如:Accept:text/xml(application/json),代表客户端希望接受的数据类型是xml(json)类型。
  4. consumes:它的作用是指定request请求提交的内容类型(Content-Type),例如application/json, text/html。注意:Content-Type代表发送端(客户端|服务器)发送的实体数据的数据类型,比如:Content-Type:text/html(application/json),代表发送端发送的数据格式是html(json)。
  5. 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,必须本地请求才能请求成功,远程请求会失败。

 

     

  • 14
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值