[javascript] Express.js에서의 데이터 유효성 검사 방법

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를 비롯한 몇 가지 방법을 소개했습니다. 데이터 유효성을 검사하여 유효하지 않은 요청을 걸러내고, 유효한 데이터로 처리하는 로직을 추가하여 안정성을 높이는 것이 좋습니다.