java - Spring MVC 验证:只需要一个字段
问题描述
我正在此 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) {
...
}
}
如何修改此块以满足要求?目前,这两个字段都被标记为不需要,并且没有进行验证。我希望它只需要这些字段之一不为空。
解决方案
尝试使用可选,我不知道您需要如何解决方案。
@GetMapping("/users")
@Operation(summary = "API to return users based on username or phone number")
public ResponseEntity<List<UserResponseObject>> usersByNameOrNumber(
@Valid @RequestParam(value = "phoneNumber", required = false) @Pattern(regexp = "^(\\d{5}|\\d{9})$") Optional<String> phoneNumber,
@Valid @RequestParam(value = "userName", required = false) @Pattern(regexp = "^[a-zA-Z ]*$") Optional<String> userName) {
try {
if(phoneNumber.isPresent()){}
if(userName.isPresent()){}
} catch (Exception e) {
}
}
但我不确定 @Pattern 和 Optional 是否会正常工作,但可能是的。也许是帮助,如果我很好地理解你的问题。
推荐阅读
- python - 如何分解组中的元素?
- sql - SQL 表问题
- image - 图像 (.png) 文件到 RMarkdown
- javascript - 在 React Native 崩溃中为应用程序使用 base64 图像字符串
- javascript - 在异步/等待捕获处理程序中使用 Promise.reject()
- python-3.x - 如何使用概率密度函数创建相等的 bin 宽度和相等的 bin 高度直方图
- python - 如何对纬度/经度进行分类以查找最近的城市
- bash - 在 bash 中批量重命名具有多个规则的文件
- search - Vim:在缓冲区底部显示没有匹配项
- file - Lisp - 使用低内存占用将哈希写入文件