我有一个带有一个端点的 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/

10-10 08:11