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}"
;
}
}
|
注意:两个参数未指定值
从中发现,两个参数必须携带,值是多少都可以。