Hallo zusammen, in diesem Artikel erfahren wir, wie wir den Express-Validator als Middleware einrichten können, außerdem werden wir detailliert auf den richtigen Anwendungsfall von Check- und Body-Methoden eingehen Express-Validator.
Express-Validator ist eine leistungsstarke Bibliothek zum Validieren und Bereinigen von Eingaben in Express-Anwendungen. Es bietet einen robusten Satz an Validierungs- und Bereinigungsfunktionen, mit denen sichergestellt werden kann, dass eingehende Daten bestimmte Anforderungen erfüllen. Diese Dokumentation führt Sie durch die Einrichtung der Validierungs-Middleware und veranschaulicht die wichtigsten Unterschiede zwischen den Prüf- und Body-Methoden für die Validierung.
Befolgen Sie nach der Installation des Express-Validators die folgenden Schritte
Sie können entweder body() oder check() verwenden, um die Validierungsregeln einzurichten.
Um Ihre Validierung wiederverwendbar zu machen und Ihre Routen sauber zu halten, definieren Sie Validierungsregeln in einer Middleware-Funktion. Hier ist eine Beispiel-Middleware-Funktion für eine Benutzerregistrierungsroute, die die E-Mail- und Passwortfelder überprüft.
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(); } ];
Nachdem Sie Ihre Validierungs-Middleware definiert haben, verwenden Sie sie in der Route, die die eingehende Anfrage verarbeitet. Dadurch bleibt die Validierung von der Routenlogik getrennt.
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'); });
Jetzt werden alle Anfragen an /register gemäß den Regeln in „validateRegistration“ validiert, bevor die Registrierungslogik ausgeführt wird.
Sowohl check() als auch body() sind Funktionen innerhalb des Express-Validators, die Validierungsregeln für eingehende Daten definieren. Sie unterscheiden sich jedoch darin, wo sie innerhalb der Anfrage nach Daten suchen und wie sie normalerweise verwendet werden.
Beispiel für die Verwendung von 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(); } ];
Hier sucht check('email') nach dem E-Mail-Feld in allen Teilen der Anfrage, einschließlich req.body, req.query und req.params.
Beispiel für die Verwendung von 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'); });
Hier prüft body('email') nur das E-Mail-Feld in req.body und erkennt es daher nicht, wenn es sich in req.query oder req.params befindet.
Wann jeweils zu verwenden ist
Beispiel mit Beidem
Sie können sowohl check() als auch body() im selben Validierungsarray verwenden, um Daten aus verschiedenen Teilen der Anfrage zu verarbeiten.
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(); } ];
In diesem Beispiel:
body('email') validiert nur E-Mails im Anfragetext.
check('token') sucht nach Token in req.body, req.query und req.params.
Durch die Verwendung von Express-Validator auf diese Weise bleibt die Validierung sauber, verwaltbar und flexibel genug, um eine Vielzahl von Eingabeformaten und -quellen zu verarbeiten, und trägt so zur Gewährleistung der Datenintegrität und -sicherheit in Ihrer Anwendung bei.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Express-Validator als Middleware in der Express-App. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!