728x90
[NodeJs / Express] 서버에서 손쉽게 데이터 유효성 검사하기
express-validator
⭐️ 서버에 전송되는 데이터의 유효성 검사는 빠를 수록 좋다.
왜냐하면 유효하지 않은 데이터를 굳이 가공하는데
비용을 낭비할 필요가 없기 때문이다
⭐️ 데이터 유효성 검사의 방법은 여러가지가 있지만
간단한 예로 회원가입시 회원가입 정보가 서버에 전달이 되었을때
아래의 데이터 기준에 부합하는 유효성 검사를 직접 구현 한 것과
express-validator를 사용한 두가지 예제를 통해 구현의 복잡성을 비교하기로 한다.
⭐️ 데이터 유효성 기준
아이디의 공백여부 및 최소 글자수 (3글자 이상) 최대 글자수 (20글자 미만)을
기준으로 유효성 검사를 하여 유효성 검사 기준에 부합할시 가입 성공 메시지 응답,
유효성 검사 기준에 해당 없을시 해당 경고 메시지를 json을 통해 응답
🌈 유효성 검사 직접 구현 코드
NodeJs 프레임 워크 : express
import express from 'express';
const app = express();
app.use(express.json());
app.post('/users',(req,res,next)=>{
if(!req.body.id){
return res.sendStatus(404);
}else {
//아이디 공백 제거
const userId = req.body.id.trim();
//아이디 3글자 이하
if(userId.length <= 3){
return res.status(400).json({message : "아이디는 3글자 이상"});
}
//아이디 20글자 초과
else if (userId.length > 20){
return res.status(400).json({message : "아이디는 20글자 미만"});
}
//정상
else {
return res.sendStatus(200);
}
}
});
🌈 유효성 검사 모듈 사용 코드
NodeJs 프레임 워크 : express
사용 모듈 : express-validator
import express from 'express';
import {body, validationResult} from 'express-validator';
const app = express();
app.use(express.json());
app.post('/users',body('id').trim().isLength({min:3,max:20}).withMessage('아이디 3글자 이상 20글자 미만'),(req,res,next)=>{
const error = validationResult(req);
if(!error.isEmpty()){
res.status(400).json(error);
} else {
res.sendStatus(200);
}
});
위와같이 공백 및 글자수 뿐만 아니라
대소문자 여부 숫자 문자열 여부 이메일 주소 여부 등
체이닝을 통해 얼마든지 추가적인 유효성 검사를
간단하게 구현할수 있다.
🌈 유효성 검사 모듈 사용 코드2
NodeJs 프레임 워크 : express
사용 모듈 : express-validator
import express from 'express';
import {body, validationResult} from 'express-validator';
const app = express();
app.use(express.json());
const validationFunc = (req,res,next)=>{
const error = validationResult(req);
if(!error.isEmpty()) return res.status(400).json(error);
next();
}
app.post('/users',
[
body('email').isEmail().isLength({max:20}).withMessage('이메일 정보 확인'),
body('password').isLength({min:5}).withMessage("5글자 이상"),
validationFunc
],
(req,res,next)=>{
res.send(req.body);
});
app.listen(8080,()=>console.log('http://localhost:8080'));
위와같이 body 내 여러 데이터 유효성 검사를
미들 웨어 추가만으로 손쉽게 구현이 가능하다
728x90
'백엔드 > NodeJs' 카테고리의 다른 글
[NodeJs] 로그인 사용자 정보를 JWT로 인증하기 (0) | 2021.08.05 |
---|---|
[NodeJs] 비밀번호 해쉬 저장 하기 bcrypt (0) | 2021.08.05 |
[NodeJs] 모듈 (export, require) (0) | 2021.07.26 |
[NodeJs] npm 특정버전 / 이전버전 / 원하는버전 설치 하기 (1) | 2021.06.09 |
[NodeJs] 구글 아이디로 로그인 하기 구현 (이메일 등 정보 받아오기) (0) | 2021.05.08 |
댓글