Graphql-validation
GraphQL-検証
データを追加または変更するときは、ユーザー入力を検証することが重要です。 たとえば、フィールドの値が常にnullでないことを確認する必要がある場合があります。 *を使用できます! (null不可)*このような検証を実行するためのGraphQLのタイプマーカー。
- !*タイプマーカーを使用するための構文は以下のとおりです-
上記の構文は、すべてのフィールドがnullでないことを保証します。
文字列の長さをチェックしたり、数値が特定の範囲内にあるかどうかをチェックするなどの追加のルールを実装する場合は、カスタムバリデーターを定義できます。 カスタム検証ロジックは、リゾルバー関数の一部になります。 例の助けを借りてこれを理解しましょう。
図-カスタムバリデーターの実装
基本的な検証を行ったサインアップフォームを作成しましょう。 フォームには、メール、名、およびパスワードのフィールドがあります。
ステップ1-プロジェクトに必要な依存関係をダウンロードしてインストールする
ステップ2-スキーマを作成する
プロジェクトフォルダーに schema.graphql ファイルを追加します
注-signUpInputの入力タイプを使用して、signUp関数のパラメーターの数を減らすことができます。 したがって、signUp関数は、SignUpInput型のパラメーターを1つだけ受け取ります。
ステップ3-リゾルバーを作成する
プロジェクトフォルダにファイル resolvers.js を作成し、次のコードを追加します-
リゾルバ関数は、「signUp」パラメータ、「email」、「password」、「firstName」を受け入れます。 これらはargs.inputを通じてアクセスできるように、input変数を介して渡されます。
ステップ4-アプリケーションを実行する
server.jsファイルを作成します。 環境設定の章の手順8を参照してください。 ターミナルでコマンド_npm start_を実行します。 サーバーは9000ポートで稼働します。 ここでは、GraphiQLをクライアントとして使用して、アプリケーションをテストします。
ブラウザーを開き、URL http://localhost:9000/graphiql を入力します。 エディタで次のクエリを入力します-
サインアップ関数への入力は複合型であるため、graphiqlでクエリ変数を使用する必要があります。 このために、最初にクエリに名前を付け、doSignUpと呼ぶ必要があります。「$ input」はクエリ変数です。
graphiqlのクエリ変数タブに次のクエリ変数を入力する必要があります-
エラー配列には、以下に示すように検証エラーの詳細が含まれています-
以下に示すように、各フィールドに適切な入力を入力する必要があります-
応答は次のとおりです-
ここで、以下のクエリでは、パスワードを割り当てていません。
必須フィールドが提供されていない場合、qraphqlサーバーは次のエラーを表示します-