入力値検査方針⚓︎
入力値検査は単項目チェックと項目間チェック、複合チェックに分類し、それぞれ以下の方針で処理します。
単項目チェック⚓︎
入力必須チェック、桁チェック、型チェックなど、単一の項目のみで完結する入力値検証です。 クライアントサイドアプリケーションとサーバーサイドアプリケーション、それぞれで同一の入力値を検証します。
クライアントサイドアプリケーションでは、入力誤りの情報を素早くユーザーにフィードバックすることを目的に実行します。 サーバーサイドアプリケーションで行う入力値検証を補助します。 入力値検証は VeeValidate と yup を利用します。
サーバーサイドアプリケーションでは、誤った入力情報がシステムに投入されることを防止する目的に行います。 入力値検証は .NET のモデル検証を利用します( ASP.NET Core MVC でのモデルの検証 | Microsoft Learn )。
項目間チェック⚓︎
パスワードと確認用パスワードの一致チェック、タスク終了日が開始日より後であることのチェックなど、複数の項目を比較する入力値検証です。 クライアントサイドアプリケーションとサーバーサイドアプリケーションで、同一の項目を持つ場合は、それぞれで同一の入力値を検証します。
クライアントサイドアプリケーションでは、入力誤りの情報を素早くユーザーにフィードバックすることを目的に実行します。 サーバーサイドアプリケーションで行う入力値検証を補助します。 入力値検証は VeeValidate と yup を利用します。
サーバーサイドアプリケーションでは、誤った入力情報がシステムに投入されることを防止する目的に行います。 入力値検証はプレゼンテーション層の業務ロジック内で実装します。 繰り返し使用するものは .NET のモデル検証を独自拡張して汎用化します。具体的には、 System.ComponentModel.DataAnnotations.ValidationAttribute
の派生クラスを作成し、 IsValid
メソッドをオーバーライドします。( カスタム属性 - ASP.NET Core MVC でのモデルの検証 | Microsoft Learn )
複合チェック⚓︎
ID の重複チェック、注文数が在庫数以内であるかのチェックなど、システムの状態によって入力値が妥当かどうかが変わる入力値検証です。 多くの場合、データストア内のデータと突き合わせて入力値の妥当性を確認します。
複合チェックはサーバーサイドアプリケーションでのみ行います。 アプリケーションコア層の業務ロジック内でチェック処理を実装します。 入力エラーがある場合は、 HTTP 400 Bad Request のステータスコードを使用して、エラーの存在を通知します。 また、入力エラーのあった個所とエラーメッセージを、エラーレスポンスの本文を使用して通知します。