Express.js는 Node.js를 위한 유명한 웹 애플리케이션 프레임워크입니다. 데이터 입력의 유효성을 검사하는 것은 웹 애플리케이션 개발에서 매우 중요한 부분입니다. 이 글에서는 Express.js에서 데이터 유효성을 검사하는 몇 가지 방법을 알아보겠습니다.
1. Joi 패키지 사용하기
Joi는 Express.js와 함께 사용하기에 적합한 데이터 유효성 검사 및 데이터 조작을 위한 패키지입니다. 다음은 Joi를 사용하여 데이터 유효성을 검사하는 예제입니다.
const Joi = require('joi');
const express = require('express');
const app = express();
app.use(express.json());
app.post('/api/users', (req, res) => {
const schema = Joi.object({
name: Joi.string().required(),
email: Joi.string().email().required(),
age: Joi.number().required()
});
const { error } = schema.validate(req.body);
if (error) {
return res.status(400).send(error.details[0].message);
}
// 유효한 데이터로 처리하는 로직 추가
// ...
res.send('유효한 데이터입니다.');
});
app.listen(3000, () => {
console.log('서버가 3000번 포트에서 실행 중입니다.');
});
위의 예제에서는 Joi
패키지를 사용하여 name
, email
, age
필드의 유효성을 검사하고 있습니다. 요청된 데이터가 유효하지 않을 경우 400 Bad Request
를 응답하며, 유효한 데이터로 처리하는 로직은 개발자의 의도에 따라 추가하면 됩니다.
2. Express-validator 미들웨어 사용하기
Express-validator는 Express.js에서 사용하기 편리한 데이터 유효성 검사 도구입니다. 다음은 Express-validator를 사용하여 데이터 유효성을 검사하는 예제입니다.
const { body, validationResult } = require('express-validator');
const express = require('express');
const app = express();
app.use(express.json());
app.post('/api/users', [
body('name').notEmpty().withMessage('이름을 입력해주세요.'),
body('email').isEmail().withMessage('유효한 이메일을 입력해주세요.'),
body('age').isInt().withMessage('나이는 숫자로 입력해주세요.')
], (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
// 유효한 데이터로 처리하는 로직 추가
// ...
res.send('유효한 데이터입니다.');
});
app.listen(3000, () => {
console.log('서버가 3000번 포트에서 실행 중입니다.');
});
위의 예제에서는 express-validator
패키지의 body
메소드를 사용하여 각 필드의 유효성을 검사하고 있습니다. 요청된 데이터가 유효하지 않을 경우 400 Bad Request
와 함께 에러 메시지를 응답하며, 유효한 데이터로 처리하는 로직은 개발자의 의도에 따라 추가하면 됩니다.
3. 별도의 유효성 검사 라이브러리 사용하기
만약 Joi나 Express-validator 외의 다른 유효성 검사 라이브러리를 사용하고 있다면, 해당 라이브러리의 문서를 참고하여 Express.js와 함께 사용하는 방법을 익히면 됩니다.
결론
Express.js에서 데이터 유효성 검사는 웹 애플리케이션의 안정성과 보안을 위해 필수적인 요소입니다. 이 글에서는 Joi와 Express-validator를 비롯한 몇 가지 방법을 소개했습니다. 데이터 유효성을 검사하여 유효하지 않은 요청을 걸러내고, 유효한 데이터로 처리하는 로직을 추가하여 안정성을 높이는 것이 좋습니다.