文章目录
- 一、请求路径参数
- 1、@PathVariable
- 二、Body参数
- 1、@RequestParam
- 2、@RequestBody
- 三、请求头参数和Cookie参数
- 1、@RequestHeader
- 2、@CookieValue
一、请求路径参数
1、@PathVariable
注解为:
org.springframework.web.bind.annotation.@PathVariable
获取路径参数,即 url/{id}
这种形式,如下请求路径中 1
即为这里的 {id}
。
http://localhost:8080/param/path/1
对应的 Java
代码:
@RequestMapping(value = "/param/path/{id}")
public String pathParams(@PathVariable(name = "id") String id){return "return id = " + id;
}
Postman
请求测试结果:
二、Body参数
1、@RequestParam
注解为:
org.springframework.web.bind.annotation.@RequestParam
获取查询参数,即 url?id=&name=
这种形式,如下请求(这里以GET请求方式为例)中,1
为 id
值,davis
为 name
值。
http://localhost:8080/param/request?id=1&name=davis
对应的 Java
代码:
@RequestMapping(value = "/param/request")
public String requestParams(@RequestParam(name = "id", required = false) String id, @RequestParam(name = "name", required = false) String name){return "return id = " + id + ", name = " + name;
}
required = false
表示该参数可以不存在。
注:
-
此方式一个参数对应一个注解,适用于少参数请求。
-
此方式支持GET、POST请求。
Postman
请求测试结果:
GET请求方式
POST请求方式
2、@RequestBody
注解为:
org.springframework.web.bind.annotation.@RequestBody
注:此种方式只支持POST请求。
请求地址:
http://localhost:8080/param/body
对应的 Java
代码:
@RequestMapping(value = "/param/body", method = RequestMethod.POST)
public String bodyParams(@RequestBody Map<String, Object> maps){return "return " + maps.toString();
}
注:此种方式请求的 Content-Type
必须为 application/json
。
Postman
请求测试结果:
以上使用的是 Map
对象接收的参数,其实我们也可以使用 实体类对象(Person)
来接收参数。
请求地址:
http://localhost:8080/param/body2
对应的 Java
代码:
@RequestMapping(value = "/param/body2", method = RequestMethod.POST)
public Person bodyParams2(@RequestBody Person person){return person;
}
实体类 Person
,这里使用了 Lombok注解
。
import lombok.Data;@Data
public class Person {private String id;private String name;
}
注:此种方式请求的 Content-Type
必须为 application/json
。
Postman
请求测试结果:
三、请求头参数和Cookie参数
1、@RequestHeader
注解为:
org.springframework.web.bind.annotation.@RequestHeader
请求地址:
http://localhost:8080/param/header
对应的 Java
代码:
@RequestMapping(value = "/param/header")
public String headerParams(@RequestHeader(name = "header", required = false) String header){return "return header = " + header;
}
注:此方式支持GET、POST请求。
Postman
请求测试结果:
2、@CookieValue
注解为:
org.springframework.web.bind.annotation.@CookieValue
请求地址:
http://localhost:8080/param/header
对应的 Java
代码:
@RequestMapping(value = "/param/cookie")
public String cookieParams(@CookieValue(name = "cwcookie", required = false) String cwcookie){return "return cookie = " + cwcookie;
}
注:此方式支持GET、POST请求。
Postman
请求测试结果: