PracticeEveryday
Express-validator 본문
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
Comments