私はSpring BootとJPAを使用してRESTサービスを作成しています。私は入力フィールドのいくつかを検証する必要があり、そうするために適切なパターンを使用していることを確認したい。Spring REST入力の検証
のは、私は以下のモデルを持っていると私はまた、モデルを制御することはできませんと仮定しましょう:私が行う必要がある
{
"company" : "ACME"
"record_id" : "ACME-123"
"pin" : "12345"
"company_name" : ""
"record_type" : 0
"acl" : ['View','Modify']
"language" : "E"
}
ものがあります:
- は、値が空でないことを確認 - これを@NotEmptyアノテーションを使って十分に単純なように見え、メッセージを渡すことができます。
- 値が有効な値リストの一部であることを確認します。ここの例は、上記のモデルの言語プロパティです。値はE、F、Sのいずれかになります。これはカスタムアノテーション(@ValidValue({"E"、 "F"、 "S"})など)を使用して可能ですが、より良い/ "Springy"これをする?
- リスト内の値が有効な値リストの一部であることを確認します。ここでの例はaclプロパティです。これは@ValidListValues({"View"、 "Modify"、 "Delete"、 "Hide"})のようなカスタムアノテーションでも可能ですが、上記と同じ質問です。
- デフォルト値を設定する - 私が読んだところから、カスタムバリデータアノテーションは検証のみを行い、変更はできません。値がnullの場合@DefaultValue(value = 5)のようなことをしたいと思います。これは可能ですか?もっと詳しくはこちら。
- 静的メソッドのリターンにデフォルト値を設定します。たとえば、上記のモデルのピンフィールドが設定されていない場合、Util.getRandomDigitsAsString(5)のように設定します。
- 別のプロパティの値を使用する - あるプロパティに別のプロパティの文字列が含まれていることを検証したいと思います。サンプルモデルを使用して、record_idがcompanyで始まることを確認します。
私は、コントローラ - >サービス - > DTO - > DAO - > Modelの標準的な方法と考えてこの設定をしています。私が考えていた別のオプションは、上記のすべての項目を通過し、必要に応じて例外をスローするメソッドvalidateCreate()を作成することでした。
ありがとうございました。
ありがとうございます。私はこれらのすべてのショットを与えるでしょう。これらはDTOかモデルで行うべきですか? – aaronanderson