我有一个带有一个端点的 RestController。该端点接受数据类的对象。数据类有 2 个属性。如何确保这些属性得到验证?
我的数据类:data class FormObject(val email: String, val age: Int)
和 Controller :
@PostMapping("submit")
fun submit(@RequestBody formObject: FormObject): FormObject {
return formObject
}
如何确保电子邮件是电子邮件并且年龄不大于 150?
谢谢,
最佳答案
您可以为此使用 Bean 验证框架。
1)将请求对象注释为需要验证:
fun submit(@Valid @RequestBody formObject: FormObject): FormObject
^^^^^^
2) 使用适当的验证注释来注释数据类的字段:
data class FormObject(
@field:NotBlank
val email: String,
@field:Min(1)
@field:Max(150)
val age: Int
)
请注意,您必须将注释应用于
field
(不是参数),否则验证将不会按照我们想要的方式进行。此外,如果我们将 age
定义为 Int
,如果调用者没有发送它,它将有一个默认值( 0
),所以我对其应用了最小验证来抵消它(假设年龄 0 不合适,YMMV)。关于spring - Kotlin Spring Boot 中的 Controller 验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58489565/