안녕하세요 여러분, 이 글에서는 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에 대한 모든 요청은 등록 로직이 실행되기 전에 verifyRegistration의 규칙에 따라 유효성이 검사됩니다.
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 App에서 미들웨어로 express-validator를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!