express-validator 라이브러리는 유효성검사를 쉽게 할 수 있게 도와준다.
Node.js 14버전, express 4버전 이상에서 작동한다.
클라이언트로부터 전달받는 데이터 속성은 여러가지가 있다. 있다.
1. check -단일 속성에 대한 검사 수행
2. body - req.body 로 들어오는 속성의 검사 수행
3. param - url 매개변수에 대한 검사 수행
4 query - url 쿼리 매개변수에 대한 검사 수행
6. cookies
7. headers
주로 검사하게 되는 속성은 body인거 같다.
아래와 같은 식으로 미들웨어에서 사용된다.
// validation.js
import { body, validationResult } from 'express-validator';
// 유효성 검사 미들웨어
export const validationCheck = body('everyThing')
.trim()
.isEmail().withMessage('이메일 형식이어야 합니다.')
.isInt().withMessage('정수여야 합니다.')
.isNumeric().withMessage('숫자여야 합니다.')
.isLength({ min: 5, max: 10 }).withMessage('길이는 5에서 10 사이여야 합니다.')
.not().isEmpty().withMessage('값이 비어있으면 안됩니다.');
// 더 효율적... 한번에 여러가지 확인하기
export const reservationValidation = [
body('reserve_date').isDate().withMessage('올바른 날짜 형식이어야 합니다.'),
body('cats').isInt().isLength({ max: 2 }).withMessage('최대 10마리 이하만 맡길 수 있습니다.'),
body('res_comment').isString().withMessage('문자열이어야 합니다.'),
body('visit_time')
.matches(/^(0[9]|1\d|2[0-2]):[0-5]\d$/)
.withMessage('09:00~22:00사이만 입력 가능합니다.'),
body('pickup_time')
.matches(/^(0[9]|1\d|2[0-2]):[0-5]\d$/)
.withMessage('09:00~22:00사이만 입력 가능합니다.'),
];
// 유효성 검사 결과 확인 후 미들웨어
export function validate(req, res, next) {
const errors = validationResult(req);
if (errors.isEmpty()) {
// 유효성 검사 통과 시 다음 미들웨어로 이동
return next();
}
// 유효성 검사 실패 시 오류 응답
return res.status(400).json({ errors: errors.array() });
}