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"}