Spring Boot-フォーム検証

2272 ワード

SpringBootは強力なフォーム検証機能を提供し、エンティティクラスのオブジェクトのパラメータに一連の注釈を通して具体的な検証ロジックを指定できます。
以下、コードで具体的な検証の実現を示します。javaでの実現は基本的に同じです。
フロントエンドコントローラ:StudentController.kt
@RestController
@RequestMapping(value = ["/student"])
class StudentController {
    @RequestMapping(value = [""])
    fun query(@Valid @RequestBody student: Student, bindingResult: BindingResult): Result {
        if (bindingResult.hasErrors()) {
            //          
            return Result(false, bindingResult.fieldError!!.defaultMessage, null)
        }
        return Result(true, "ok", null)
    }
}
実体類:Student.kt
class Student : Serializable {
    var id: Long? = null
    @get:NotEmpty(message = "      ")
    var name: String? = null
    var sex: Int? = null
    var age: Int? = null
}
統一の要求結果:Result.kt
data class Result(val success: Boolean, val message: String?, val data: T?)
上記のコードにより、「名前は空ではない」というパラメータの検証を行いました。
要求パラメータが要求に適合している場合、応答結果は以下の通りです。
{
    "success": true,
    "message": "ok",
    "data": null
}
要求パラメータの検証が不合格であり、応答結果は以下の通りである。
{
    "success": false,
    "message": "      ",
    "data": null
}
エンティティフィールドにパラメータを追加して関連する注釈を検証することにより、コード内のハードコードの検証ロジックを回避し、検証がより明確で簡潔になるようにしました。
例では@NotEmptyコメントのみを使用していますが、実際にはSpringBootでサポートされているパラメータの検証コメントがたくさんあります。下表は他のパラメータ検証に関する注釈を示しています。
注釈
説明
@Null
nullだけです
@NotNull
nullではないです
@NotEmpty
nullではなく、空ではありません。文字列の長さは0ではなく、集合の大きさは0ではありません。
@NotBlank
文字列はnullでなくてはいけません。空です。
@AsertFalse
falseだけです
@アスsertTrue
trueだけです
@Decimal Max(value)
指定された値より大きい数字だけです。
@Decimal Min(value)
指定された値より小さい数字しかできません。
@Digits(integer、fraction)
小数点以下しかできません。整数値はintegerを超えません。小数点以下はfractionを超えません。
@メール
必ずメールボックスのフォーマットに合わせてください。
@Future
将来の日付でなければなりません。
@Max(value)
指定された値より大きい数字だけです。
@Min(value)
指定された値より小さい数字しかできません。
@Past
過去の日付でなければなりません。
@Pattern(value)
指定された正規表現と一致する必要があります。
@Size(max,min)
文字の長さはminからmaxまでの間でなければなりません。