웹 애플리케이션 개발 시 사용자로부터 입력받은 데이터의 유효성을 검사하는 것은 매우 중요하다. Node.js의 Express 프레임워크에서는 express-validator
모듈을 통해 간편하게 입력 데이터의 유효성 검사를 수행할 수 있다. 이 글에서는 express-validator
의 기본 사용법과 실제 프로젝트에서 유효성 검사 로직을 모듈화하는 방법에 대해 알아보자.
먼저 express-validator
를 프로젝트에 설치한다.
npm install express-validator
설치가 완료되면, 다음과 같이 express-validator
의 검사 함수들을 이용하여 유효성 검사를 수행할 수 있다.
const express = require('express');
const { body, validationResult } = require('express-validator');
const app = express();
app.use(express.json());
app.post('/user', [
body('userId').notEmpty().isInt().withMessage('userId는 숫자여야 합니다.'),
body('name').isString().isLength({ min: 2 }).withMessage('이름은 2글자 이상의 문자열이어야 합니다.')
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
// 데이터 처리 로직
});
app.listen(3000);
위 예제에서는 POST 요청으로 전달된 userId
와 name
필드에 대한 유효성 검사를 수행한다. userId
는 비어 있지 않고 숫자여야 하며, name
은 문자열이고 최소 2글자 이상이어야 한다. 유효성 검사에 실패한 경우, 400 상태 코드와 함께 에러 메시지를 응답한다.
유효성 검사 코드는 여러 라우트에서 중복될 수 있으므로, 반복을 피하기 위해 별도의 미들웨어로 분리하는 것이 좋다. 이를 위해 먼저 유효성 검사 결과를 확인하고 처리하는 로직을 함수로 만든다.
const { validationResult } = require('express-validator');
const validate = (req, res, next) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
next();
};
이제 validate
함수를 미들웨어로서 사용하여 유효성 검사 로직을 재사용할 수 있다.
const express = require('express');
const { body } = require('express-validator');
const app = express();
app.use(express.json());
app.post('/user', [
body('userId').notEmpty().isInt(),
body('name').isString().isLength({ min: 2 }),
validate
], (req, res) => {
// 데이터 처리 로직
});
app.listen(3000);
위와 같이 유효성 검사 로직을 분리함으로써, 코드의 중복을 줄이고 유지보수를 용이하게 할 수 있다.
express-validator
를 사용하여 Express 애플리케이션에서 입력 데이터의 유효성을 쉽게 검사할 수 있다. 유효성 검사 로직을 미들웨어로 분리함으로써 코드의 재사용성을 높이고, 프로젝트의 구조를 개선할 수 있다.