Spring @RequestParam批注

介绍:

Spring @RequestParam批注可用于在处理程序方法中提取查询参数。 在本快速教程中,我们将学习其用法。

首先让我们展示一个API,该API返回具有给定名字和年龄的用户列表:

@RestController
public class UserController {
    ...
    @GetMapping("/users")
    public List<User> getUsers(@RequestParam String firstName, @RequestParam int age) {
        return userService.findUsersWith(firstName, age);
    }
}

现在,让我们使用cURL快速测试一下:

curl -XGET 'http://localhost:8080/users?firstName=John&age=15'
...
[{firstName = John ,lastName = Mason ,age = 15}
  , {firstName = John ,lastName = Dash ,age = 15}]

如我们所见, firstNameage是正确映射到我们的处理程序方法的查询参数。

@RequestParam批注支持使用多种属性来满足各种常见需求:

1.

在刚刚介绍的示例中,我们将注意到方法参数和查询参数的名称相同( firstNameage )。

但是, 有时,我们可能会觉得需要使用不同的名称。 为此,我们将使用其namevalue属性

@GetMapping("/users")
public List<User> getUsers(@RequestParam(name="uName") String firstName
  , @RequestParam("uAge") int age) {
    return userService.findUsersWith(firstName, age); 
}

这样,UNAMEuAge参数将分别映射到firstName年龄的方法参数:

curl -XGET 'http://localhost:8080/users?uName=John&uAge=15'

2.

默认情况下, 如果我们定义了一个请求参数,并且未在用户请求中传递它,则会收到错误消息。

为了避免这种情况,我们可以将required设置为false:

@GetMapping("/users") 
public List<User> getUsers(@RequestParam(required=false) String firstName
 , @RequestParam int age) {
    return userService.findUsersWith(firstName, age); 
}

它将为所有可选参数分配默认数据类型。 当我们点击以下URL时:

http://localhost:8080/users?age=15

firstName将被映射为值。

3.

如果我们想要将required设置为false并且还将默认值映射到所关注的属性,我们将具有:

@GetMapping("/users") 
public List<User> getUsers(@RequestParam(defaultValue="John") String firstName,
  @RequestParam int age) { 
    return userService.findUsersWith(firstName, age); 
}

在这里,如果我们不传递firstName查询参数,它将假定它是'John'

我们可以在Java 列表中接受查询参数的列表:

@GetMapping("/users/v2")
public List<User> getUsersWithGivenAges(@RequestParam List<Integer> age) {
    return userService.findUsersWithAges(age);
}

要使用我们的新用户API,我们将提供以下内容:

curl -XGET 'http://localhost:8080/users/v2?age=10,15,20'
 
Or
 
curl -XGET 'http://localhost:8080/users/v2?age=10&age=15&age=20'

检索所有参数:

要从用户请求中检索所有传递的查询参数,我们将其接受为Java Map

@GetMapping("/paramsEx")
public Map<String, String> 
  printParams(@RequestParam Map<String, String> allQueryParams) {
    System.out.println(allQueryParams); 
    return allQueryParams; 
}

当我们想检索所有参数而不知道它们的名称时,这很方便:

curl -XGET 'http://localhost:8080/paramsEx?param1=A&param2=B&param3=2'
...
{param1=A, param2=B, param3=2}

结论:

在本教程中,我们学习了如何在Spring应用程序中使用@RequestParam批注。

翻译自: https://www.javacodegeeks.com/2019/10/spring-requestparam-annotation.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值