[6주차 04] 유효성 검사

개발냥이·2025년 2월 27일

데브코스

목록 보기
22/75
post-thumbnail

유효성 검사

유효성 검사는 사용자가 입력한 값이 유효한 지 확인하는 것 이다.

로그인을 예시로 보면 아이디값에 문자+숫자를 입력해야 하는데
문자만 입력한 경우 , 숫자만 입력한 경우 , 아무것도 입력하지 않은 경우 등등 다양한 예외 상황이 발생한다
따라서 유효성 검사는 필수적이다.


express-validator

express-validator는 express에서 유효성 검사를 도와주는 모듈이다.
유효성 검사를 개발자가 직접 구현할 수도 있지만 코드가 길어지고
놓치는 부분이 있을 수도 있기 때문에 모듈을 사용해도 좋다

  • 사용법

      1. 설치 npm install express-validator
      1. 코드 상단에 import
      1. 원하는 곳에 express-validator 호출

채널생성 API에 express-validator 적용해보기

전체 코드


const express = require('express');
const router = express.Router();
const conn = require('../db');
const {body, param, validationResult} = require('express-validator');

router
  .route('/')

  .post(
    [
      body('user_id')
        .notEmpty()
        .isInt()
        .withMessage('user_id는 숫자로 입력해주세요'),
      body('name')
        .notEmpty()
        .isString()
        .withMessage('채널 이름은 문자로 입력해주세요'),
      validation,
    ],

    (req, res) => {
      const err = validationResult(req);
      if (!err.isEmpty()) {
        return res.status(400).end();
      }

      const {name, user_id} = req.body;
      let sql = `INSERT INTO channels (name , user_id) VALUES  (?,?) `;

      conn.query(
        sql,
        [name, user_id],

        (err, result) => {
          if (err) {
            return res.status(400).end();
          }
          if (result.affectedRows > 0) {
            res.status(201).json({message: `${name}님 환영합니다 ㅎㅎ`});
          } else {
            Notmsg(res);
          }
        },
      );
    },
  )
  1. 코드 상단에 import
const { body, param, validationResult } = require('express-validator');

코드 상단에 express-validator가 제공해주는 body, param , validationResult를 가져온다.
참고로 body는 필드값 , param은 url값 , validationResult는 유효성 검사 결과를 사용할 때 사용된다.

  1. API 매개변수 안에 선언
.post(
  [
    body('user_id')
      .notEmpty()
      .isInt()
      .withMessage('user_id는 숫자로 입력해주세요'),
    body('name')
      .notEmpty()
      .isString()
      .withMessage('채널 이름은 문자로 입력해주세요'),
    validation,
  ],

user_id와 name의 유효성 검사를 하며 값이 비어 있지 않아야 하고 user_id는 숫자형 name은 문자형이어야 함

  1. 유효성 검사
const err = validationResult(req);
if (!err.isEmpty()) {
  return res.status(400).end();
}

만약 오류가 있다면 400 상태코드와 함께 종료

이 과정을 들을 거친 후 query문이 실행된다.


후기

그동안 강의를 보며 if~else문으로만 유효성 검사를 했었는데
유효성 검사를 도와주는 모듈이 있다는 점이 너무 신기하고 편리한 거 같다.
그동안 모듈들은 사용하던 것만 사용했었는데 앞으로는 찾아보면서
편리한 모듈이 있으면 사용해야겠다는 생각이 들었다.

profile
웹 개발자가 되고픈

0개의 댓글