spring boot——参数传递——请求注解@RequestMapping各个属性值

1、RequestMapping接口的源码如下,里面定义了七个属性

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public interface RequestMappingextends Annotation {       // 指定映射的名称     public abstract String name();       // 指定请求路径的地址     public abstract String[] value();       // 指定请求的方式,是一个RequsetMethod数组,可以配置多个方法     public abstract RequestMethod[] method();       // 指定参数的类型     public abstract String[] params();           public abstract String[] headers();       // 指定数据请求的格式     public abstract String[] consumes();       // 指定返回的内容类型     public abstract String[] produces(); }

  

 

 

 

 

2、下面是我在服务器端编写的一个程序,我将@RequestMapping中的参数都采用了符合原接口的定义的数组的数据类型。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package com.awaimai.web;   import org.hibernate.validator.constraints.*; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.Size; import java.util.Enumeration;   @RestController @Validated public class kzq {         @RequestMapping(value = {"/test4","/test5"},method={RequestMethod.POST, RequestMethod.GET}, consumes={"application/json"}, <br>                    produces={"application/json"}, params={"name=mike","pwd=123456"},headers={"a=1"})     @ResponseBody     public String test4()     {         return "{\"id\":1}";     }       }

  

2.1  测试value属性:映射的是请求的地址,如果是一个数据,那么这两个地址之间的关系是或(||)的关系

 

 

 

2.2、method属性:定义了请求的方式,如果此属性定义了多个值,那么可以适应多种请求方式,

        比如此例中我定义了RequestMethod.POST与RequestMethod.GET两种方法,采用postMan发送两种请求也可以得到正确的JSON数据。

        正确的请求方式如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.3、consumes属性 :指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

  

        produces属性:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回,

 

       本人实验了一下,如果请求的头中不包含这个属性也能有正确的返回值,但是如果有Accept这个属性,那么前后要匹配,否则输出报错;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=================================================================================

=================================================================================

 

 

URL:       http://localhost:8080/test5?name=mike&pwd=123456

 

如果mike和123456的值未携带或者为空,报错

 

 

 

 

 

 

 

==================================================================

 

===================================================================

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 package com.awaimai.web;   import org.hibernate.validator.constraints.*; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.Size; import java.util.Enumeration;   @RestController @Validated public class kzq {           @RequestMapping(value = {"/test4","/test5"},method={RequestMethod.POST, RequestMethod.GET}, consumes={"application/json"},<br>                    produces={"application/json"}, params={"name","pwd"},headers={"a=1"})     @ResponseBody     public String test4()     {         return "{\"id\":1}";     }       }

  

注意:两个参数未指定值

 

 

 

 

 

 

 

 

 

 

从中发现,两个参数必须携带,值是多少都可以。

 

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...