PracticeEveryday

Express-validator 본문

Nodejs

Express-validator

kimddakki 2022. 6. 16. 16:01
Express-validator

 - 유효성 검사란 클라이언트에서 서버로 요청을 보낼 때, 정확한 데이터를 보내고 있는지 확인하는 것이다.

npm install --save express-validator 
yarn add express-validator -D
const { body, validationResult } = require('express-validator');

app.post(
  '/user',
  // username must be an email
  body('username').isEmail(),
  // password must be at least 5 chars long
  body('password').isLength({ min: 5 }),
  (req, res) => {
    // Finds the validation errors in this request and wraps them in an object with handy functions
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }

    User.create({
      username: req.body.username,
      password: req.body.password,
    }).then(user => res.json(user));
  },
);

 - POST user 로 보냈을 때 body에 username의 값을 이메일인지 아닌지 검사를 하는 것입니다.

 - password는 5글자 보다 작은지 검사하고 그렇지 않을 경우 에러를 반환합니다.

{
  "errors": [
    {
      "location": "body",
      "msg": "Invalid value",
      "param": "username"
    }
  ]
}

router

router.post(
  "/login",
  [
    body("email").isEmail().withMessage("이메일을 입력해주세요"),
    body("password")
      .notEmpty()
      .withMessage("비밀번호를 입력해주세요")
      .isLength({ min: 8, max: 16 })
      .withMessage("8~16자리 비밀번호를 입력해주세요"),
    validateError,
  ],
  usersController.login,
);

middleware

const { validationResult } = require("express-validator");

module.exports = {
  validateError: (req, res, next) => {
    const errors = validationResult(req);
    if (errors.isEmpty()) {
      return next();
    }
    return res.status(400).json({ message: errors.array()[0].msg });
  },
};
middleware
// 바로 보내는 것도 가능

import { body, validationResult } from "express-validator";

const validate = (req, res, next) => {
  const errors = validationResult(req);
  if (errors.isEmpty()) {
    return next();
  }
  return res.status(400).json(errors);
};

  export const validator = [
    body("email").isEmail().withMessage("이메일을 입력해주세요"),
    body("password")
      .notEmpty()
      .withMessage("비밀번호를 입력해주세요")
      .isLength({ min: 8, max: 16 })
      .withMessage("8~16자리 비밀번호를 입력해주세요"),
      validate
  ]

 - validationResult는 request로 넘어오는 파라미터들을 유효성 검사 한 후 에러가 발생하면 배열 형태로 반환하는 함수

   => 따라서 errors가 비어있으면 유효성 검사가 통과된 것입니다.

유용한 express-validator 함수들
trim() : 공백을 제거해줍니다.
isLength(num) : 길이가 num인지 확인해줍니다. { min: num, max: num } 과 같이 최소, 최대 값도 지정할 수 있습니다.
bail() : 해당 부분에서 에러가 발생하면 다음으로 넘어가지 않습니다.
isNumeric() : 숫자 형태이지 확인한다. string이어도 해당 string이 숫자인지 확인해줍니다.
isEmail() : string이 이메일 형태인지 확인해줍니다.
isJSON() : string이 유효한 JSON인지 확인해줍니다. JSON.parse를 사용한다고 합니다.
isMobilePhone() : string이 모바일 휴대폰 번호인지 확인해줍니다.

 

 

[NodeJS] express-validator

안녕하세요, 김현지입니다.오늘은 유효성 검사를 깔끔하게 할 수 있는 express-validator에 대해 알아보겠습니다!express-validator는 express에서 사용할 수 있는 유효성 검사 모듈입니다.미들웨어 함수로

velog.io

 

'Nodejs' 카테고리의 다른 글

Express  (0) 2022.06.13
Node.js + Swagger  (0) 2022.06.08
Nodejs  (0) 2022.05.17
Nodejs  (0) 2022.05.14
Nodejs  (0) 2022.05.14
Comments