私はProduct
、DAOレイヤーによって(Salatを使用して)返されるケースクラスを持っています。製品を初めて作成しているユーザーの製品ステータスは、(製品の) フィールドが必須ではない「下書き」のままです。
製品の 10 個の属性を検証し、すべての検証エラーを 1 つのエンティティに蓄積してから、JSON 形式で一度にすべてのエラーをフロントエンドに渡すための最良の機能的な方法は何ですか?
質問の核心はエラーを蓄積する方法だと思います.JSONフォーマットは別の問題であり、エラーをどのように収集したかには依存しません.
それが本当に単なる検証の問題である場合は、一連のメソッドを持つことができます
def problemWithX: Option[String] = ...
Some(errorMessage)
それらが無効な場合、または問題がない場合に返されNone
ます。次に、それは次のように簡単です
List(problemWithX, problemWithY, ...).flatten
すべてのエラーのリストを作成します。リストが空の場合は、問題ありません。そうでない場合は、エラーがリストされています。適切なエラー レポートを作成するのは、problemWithX
メソッドの仕事です。もちろん、単に文字列が必要なのか、それともより複雑な情報が必要なのかを判断する必要があります。Invalid
(異なる条件を処理するために、特性を定義し、クラスにそれを拡張させる必要さえあるかもしれません。)
これはまさに ScalaZ のValidation
型の目的です。