weblog

技術的なメモ置き場。

Micronautでバリデーション

MicronautでPostされたデータをバリデーションする。


環境

  • Kotlin 1.3.21
  • Micronaut 1.1.3

build.gradleに以下を追加する。

dependencies {
    ...
    compile 'io.micronaut.configuration:micronaut-hibernate-validator'
    ...
}

Postデータを受け取るFormクラスを作成する。 各パラメータにアノテーションで実施したいバリデーションを指定する。 Kotlinの場合 @field: が必要。

data class ValidationForm(
    @field:NotNull
    val name: String,

    @field:Max(10)
    val age: Int
)

Controllerクラスを作成する。 クラスレベルに @Validated を付与する必要がある。

@Validated
@Controller("/validation")
class ValidationController {

    @Post("/")
    fun index(@Body @Valid form: ValidationForm): HttpStatus {
        return HttpStatus.OK
    }
}

アプリを起動してバリデーションを試す。

$ curl -X POST -H "Content-Type: application/json" -d '{"name":"hoge", "age":"100"}' localhost:8080/validation/
> {"_links":{"self":{"href":"/validation/","templated":false}},"message":"form.age: must be less than or equal to 10"}