Skip to content

请求参数

请求参数

请求参数有两种类型:query 参数和表单参数。在Spring Boot中我们可以使用@RequestParam 获取请求参数

Query参数

html
<form action="/user" method="get">
  <input type="text" name="name">
  <input type="text" name="age">
  <button type="submit">提交</button>
</form>
http
/user?name=tom&age=20

表单参数

html
<form action="/user" method="post">
  <input type="text" name="name">
  <input type="text" name="age">
  <button type="submit">提交</button>
</form>
http
Content-Type: application/x-www-form-urlencoded
POST /user

获取参数

获取单个值

  • 请求参数是单值

URL

/user?id=100

Controller

java
@GetMapping("/user")
public String getUser(@RequestParam("id") Integer id) {
    return "用户ID:" + id;
}
  • 请求参数是多值(数组)

URL

/test?ids=1,2,3
/test?ids=1&ids=2&ids=3

Controller:

java
@GetMapping("/test")
public List<Integer> test(@RequestParam List<Integer> ids) {
    return ids;
}

获取所有值

如果参数很多,可以用 Map 接收所有的请求参数:

URL

/test?a=1&b=2

Controller:

java
@GetMapping("/test")
public Map<String,String> test(@RequestParam Map<String,String> params) {
    return params;
}

省略参数名

如果 方法参数名和请求参数名一致,可以省略:

URL

/user?id=100

Controller

java
@GetMapping("/user")
public String getUser(@RequestParam Integer id) {
    return "用户ID:" + id;
}

必填参数

@RequestParam 装饰的变量默认是 必须存在的。直接使用/user访问会报错

java
@GetMapping("/user")
public String getUser(@RequestParam Integer id) {
    return id.toString();
}

我们可以将请求参数设为非必填

java
@GetMapping("/user")
public String getUser(@RequestParam(required = false) Integer id) {
    return "id=" + id;
}

默认值

java
@GetMapping("/user")
public String getUser(@RequestParam(defaultValue = "0") Integer id) {
    return "id=" + id;
}