spring-boot - SpringBoot 验证简单域类的@RequestBody 参数
问题描述
我有一个域类:
@Data
@AllArgsConstructor
class Person {
Integer age;
String gender;
}
我有以下控制器:
@RestController
class PersonController {
@PostMapping("/person")
public String testMethod(@RequestBody Person person) {
return "Valid";
}
}
现在我使用以下正文执行 API POST /person :
{
"age": "12",
"gender": "Q"
}
所以这成功返回字符串Valid
如何在 SpringBoot 中添加验证,以便:
- age 只接受整数值。
- 性别只接受字符串值 - M 或 F
解决方案
您可以javax.validation.*
在域模型对象上使用注释。
public class Person {
@Min(value = 18, message = "Age should not be less than 18")
@Max(value = 100, message = "Age should not be greater than 100")
private int age;
private Gender gender;
}
public enum Gender {
M, F
}
...
@RestController
class PersonController {
@PostMapping("/person")
public String testMethod(@Valid @RequestBody Person person) {
return "Valid";
}
}
请注意,虽然可以使用 java bean 验证包中的注释来解决“性别”,但我提出了一种基于枚举的替代解决方案,因为它更具表现力并且也可以回答这个问题。
阅读有关该功能的介绍性教程
推荐阅读
- java - 将 Json 转换为类型脚本类 [ts]
- android - Oreo DocumentsContract.getDocumentId(uri) 返回路径而不是 Long
- javascript - R - 对角网络中的 JS 数组
- reactjs - 如何从 React Typescript 中的通用数组中删除项目?
- cassandra - Cassandra Nodetool 状态显示找不到命令
- enterprise-architect - Enterprise Architect 的文档中未生成序列图
- r - R中的匹配值
- asp.net-mvc - 如何使用 ImageResizer 处理图像并将其上传到 Azure 存储?
- neural-network - H2O.ai mini_batch_size 真的用过吗?
- iframe - 如果 iframe [src] 使用角度 5 给出 404 错误,如何处理错误