Kotlin Spring Boot中的控制器验证

时间:2019-10-21 15:32:27

标签: spring rest spring-boot kotlin

我有一个带有一个端点的RestController。该端点接受数据类的对象。数据类具有2个属性。如何确保这些属性经过验证?

我的数据类:

data class FormObject(val email: String, val age: Int)

和控制器:

@PostMapping("submit")
fun submit(@RequestBody formObject: FormObject): FormObject {
    return formObject
}

如何确定电子邮件是电子邮件并且年龄不大于150? 谢谢,

1 个答案:

答案 0 :(得分:2)

您可以为此使用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)。