有一种方法,我可以限制请求参数的数量在我的方法头在SpringBoot?



如果我有一个方法有10个请求参数我可能并不总是需要它们

@GetMapping("/whatever")
public ResponseEntity<String> sendSomethingBack(@RequestParam String optionalRequestParam1, 
@RequestParam String optionalRequestParam2,
... 
@RequestParam String optionalRequestParam10)

那么在这个头文件中我想要的是像

这样的内容
@GetMapping("/whatever")
public ResponseEntity<String> sendSomethingBack(@RequestParam RequestParamBuilder requestParamBuilder)

然后它会为我创建一个对象其中所有有效的参数都是填好的其余的都是空的

您可以使用Map:

拥有多个参数而无需定义其名称
@GetMapping("/whatever")
public ResponseEntity<String> sendSomethingBack(@RequestParam Map<String, Object> params) {
log.info("Params: {}",  params.entrySet();
}

如何拨打电话:

curl --location --request GET 'http://localhost:8080/whatever?integer=45&string="some text"&boolean=true'

输出:

参数:[integer=45, string="some text", boolean=true]

如果您希望将参数传递到对象中,您可以使用POJO,但要删除@RequestParam标记:

@GetMapping("/whatever")
public ResponseEntity<String> sendSomethingBack(RequestParamBuilder requestParamBuilder)

RequestParamBuilder创建一个类。您可以将POJO中的字段标记为@NotNull等,以处理验证并仅使用请求中包含的参数构建对象,但是如果您希望spring以这种方式验证它,POJO必须用@Valid注释:

@GetMapping("/whatever")
public ResponseEntity<String> sendSomethingBack(@Valid RequestParamBuilder requestParamBuilder)

相关内容

  • 没有找到相关文章

最新更新