[TIL]express-validator

Cherry Jin·2023년 12월 14일
0

sparta_내배캠

목록 보기
28/53
post-thumbnail

express-validator

express-validator 라이브러리는 유효성검사를 쉽게 할 수 있게 도와준다.
Node.js 14버전, express 4버전 이상에서 작동한다.

검사 대상 속성

클라이언트로부터 전달받는 데이터 속성은 여러가지가 있다. 있다.
1. check -단일 속성에 대한 검사 수행
2. body - req.body 로 들어오는 속성의 검사 수행
3. param - url 매개변수에 대한 검사 수행
4 query - url 쿼리 매개변수에 대한 검사 수행
6. cookies
7. headers

주로 검사하게 되는 속성은 body인거 같다.

  1. custom - 사용자 정의에 따른 검사
  2. validationResult - 유효성검사 결과 반환

유효성 검사 속성

  1. isEmpty - 값이 비어있는지 확인
    • not().isEmpty() - 값이 입력되어있음을 확인
  2. isLength - 값의 길이 검사
  3. isEmail - 값이 이메일 주소인지 검사
  4. isInt - 값이 정수인지 검사
  5. isNumeric - 값이 숫자인지 검사
  6. trim - 공백 제거
    이외에도 존재하지만 가장 많이 사용하는 속성만 기록함

아래와 같은 식으로 미들웨어에서 사용된다.

// 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() });
}

profile
풀스택이 되버린 주니어 개발자

0개의 댓글