如果我有一个方法有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)