Helo semua, Dalam artikel ini kita akan belajar bagaimana kita boleh menyediakan express-validator sebagai middleware, juga kita akan menyelami lebih mendalam dalam butiran tentang kes penggunaan yang betul kaedah checkand body dalam pengesah nyata.
express-validator ialah perpustakaan yang berkuasa untuk mengesahkan dan membersihkan input dalam aplikasi Express. Ia menyediakan set fungsi pengesahan dan sanitasi yang teguh yang boleh digunakan untuk memastikan data masuk memenuhi keperluan khusus. Dokumentasi ini akan membimbing anda melalui penyediaan middleware pengesahan dan menggambarkan perbezaan utama antara kaedah semakan dan badan untuk pengesahan.
Selepas memasang express-validator, ikut langkah di bawah
Anda boleh sama ada menggunakan body() atau check() untuk menyediakan peraturan pengesahan.
Untuk menjadikan pengesahan anda boleh diguna semula dan memastikan laluan anda bersih, tentukan peraturan pengesahan dalam fungsi perisian tengah. Berikut ialah contoh fungsi middleware untuk laluan pendaftaran pengguna yang menyemak medan e-mel dan kata laluan.
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(); } ];
Selepas menentukan perisian tengah pengesahan anda, gunakannya dalam laluan yang mengendalikan permintaan masuk. Ini memastikan pengesahan berasingan daripada logik laluan.
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'); });
Kini, sebarang permintaan untuk /mendaftar akan disahkan mengikut peraturan dalam validateRegistration sebelum logik pendaftaran dilaksanakan.
Kedua-dua check() dan body() ialah fungsi dalam express-validator yang mentakrifkan peraturan pengesahan untuk data masuk. Walau bagaimanapun, mereka berbeza dalam tempat mereka mencari data dalam permintaan dan cara ia biasanya digunakan.
Contoh Penggunaan cek()
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(); } ];
Di sini, semak('email') akan mencari medan e-mel dalam semua bahagian permintaan, termasuk req.body, req.query dan req.params.
Contoh Penggunaan badan()
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'); });
Di sini, body('email') hanya akan menyemak medan e-mel dalam req.body, jadi ia tidak akan mengesannya jika ia berada dalam req.query atau req.params.
Bila Gunakan Setiap
Contoh dengan Kedua-duanya
Anda boleh menggunakan kedua-dua check() dan body() dalam tatasusunan pengesahan yang sama untuk mengendalikan data daripada bahagian permintaan yang berlainan.
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(); } ];
Dalam contoh ini:
body('email') hanya mengesahkan e-mel dalam kandungan permintaan.
check('token') mencari token merentas req.body, req.query dan req.params.
Menggunakan express-validator dengan cara ini memastikan pengesahan bersih, terurus dan cukup fleksibel untuk mengendalikan pelbagai format dan sumber input, membantu memastikan integriti dan keselamatan data dalam aplikasi anda.
Atas ialah kandungan terperinci Cara menggunakan express-validator sebagai middleware dalam Apl Express. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!