【发布时间】:2021-10-12 19:35:32
【问题描述】:
我正在此 API 中创建一个新端点,它接受包含用户名或 5 或 9 位电话号码的请求。我需要添加验证以验证包含用户名或电话号码的请求;如果两者都提供,则返回验证错误。这是我当前的代码。
@GetMapping("/users")
@Operation(summary = "API to return users based on username or phone number")
public ResponseEntity<List<UserResponseObject>> usersByNameOrNumber(
@Valid @RequestParam(name = "phone-number", required = false) @Pattern(regexp = "^(\\d{5}|\\d{9})$") String userPhoneNumber,
@Valid @PathVariable(name = "user-name", required = false) @Pattern(regexp = "^[a-zA-Z ]*$") String userName) {
try {
...
} catch (Exception e) {
...
}
}
如何修改此块以满足要求?目前,这两个字段都被标记为不需要,并且没有进行验证。我希望它只需要这些字段之一不为空。
【问题讨论】:
-
这些通常应该是请求参数,而不是路径变量,您可以在请求映射中使用
params=来指定必须存在哪些参数才能匹配。
标签: java spring-boot validation annotations swagger