【问题标题】:Controller validation in Kotlin Spring BootKotlin Spring Boot 中的控制器验证
【发布时间】:2020-02-17 17:39:49
【问题描述】:

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

我的数据类:

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

和控制器:

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

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

【问题讨论】:

    标签: spring rest spring-boot kotlin


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 2020-11-15
      • 2019-03-27
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多