皆さん、こんにちは。この記事では、Express-Validator をミドルウェアとして設定する方法を学びます。また、check メソッドと body メソッドの適切な使用例について詳しく説明します。エクスプレスバリデータ。
Express-validator は、Express アプリケーションの入力を検証およびサニタイズするための強力なライブラリです。受信データが特定の要件を満たしていることを確認するために使用できる、堅牢な検証およびサニタイズ機能のセットを提供します。このドキュメントでは、検証ミドルウェアのセットアップ手順を説明し、検証のためのチェック メソッドとボディ メソッドの主な違いを説明します。
express-validator をインストールした後、以下の手順に従います
body() または check() を使用して検証ルールを設定できます。
検証を再利用可能にし、ルートをクリーンに保つには、ミドルウェア関数で検証ルールを定義します。以下は、電子メール フィールドとパスワード フィールドをチェックするユーザー登録ルートのミドルウェア関数の例です。
import { check, validationResult } from 'express-validator'; // DEFINE VALIDATION RULES const validateRegistration = [ check('email') .isEmail() .withMessage('Please enter a valid email address') .isLength({ max: 100 }) .withMessage('Email cannot exceed 100 characters'), check('password') .isLength({ min: 6 }) .withMessage('Password must be at least 6 characters long') .isLength({ max: 255 }) .withMessage('Password cannot exceed 255 characters'), // CHECK FOR VALIDATION ERRORS (req, res, next) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } // IF NO ERRORS, MOVE TO NEXT MIDDLEWARE next(); } ];
検証ミドルウェアを定義したら、受信リクエストを処理するルートでそれを使用します。これにより、検証がルート ロジックから分離されます。
import express from 'express'; const app = express(); app.use(express.json()); app.post('/register', validateRegistration, (req, res) => { // USE YOUR REGISTRATIO LOGIC HERE res.status(201).json({ message: 'User registered successfully' }); }); app.listen(3000, () => { console.log('Server running on http://localhost:8080'); });
これで、/register へのリクエストはすべて、登録ロジックが実行される前に validateRegistration のルールに従って検証されます。
check() と body() は両方とも、受信データの検証ルールを定義する Express-validator 内の関数です。ただし、リクエスト内のデータを検索する場所と、通常の使用方法が異なります。
check() の使用例
import { check, validationResult } from 'express-validator'; // DEFINE VALIDATION RULES const validateRegistration = [ check('email') .isEmail() .withMessage('Please enter a valid email address') .isLength({ max: 100 }) .withMessage('Email cannot exceed 100 characters'), check('password') .isLength({ min: 6 }) .withMessage('Password must be at least 6 characters long') .isLength({ max: 255 }) .withMessage('Password cannot exceed 255 characters'), // CHECK FOR VALIDATION ERRORS (req, res, next) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } // IF NO ERRORS, MOVE TO NEXT MIDDLEWARE next(); } ];
ここで、check('email') は、req.body、req.query、req.params を含むリクエストのすべての部分で電子メール フィールドを検索します。
body() の使用例
import express from 'express'; const app = express(); app.use(express.json()); app.post('/register', validateRegistration, (req, res) => { // USE YOUR REGISTRATIO LOGIC HERE res.status(201).json({ message: 'User registered successfully' }); }); app.listen(3000, () => { console.log('Server running on http://localhost:8080'); });
ここで、body('email') は req.body 内の電子メール フィールドのみをチェックするため、req.query または req.params にある場合は検出されません。
それぞれをいつ使用するか
両方を使用した例
同じ検証配列で check() と body() の両方を使用して、リクエストのさまざまな部分からのデータを処理できます。
import { check } from 'express-validator'; const validateEmail = [ check('email') .isEmail() .withMessage('Invalid email address'), (req, res, next) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } next(); } ];
この例では:
body('email') はリクエスト本文内の電子メールのみを検証します。
check('token') は、req.body、req.query、および req.params にわたってトークンを検索します。
この方法で Express-validator を使用すると、検証がクリーンで管理しやすく、さまざまな入力形式やソースを処理できる柔軟性が維持され、アプリケーションのデータの整合性とセキュリティを確保できます。
以上がExpressアプリのミドルウェアとしてexpress-validatorを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。