인프런 커뮤니티 질문&답변

이진님의 프로필 이미지

작성한 질문수

습관부터 바꿔주는 Node.js & Express 기초

유효성 검사

23.06.06 21:44 작성

·

307

0

구글링을 통하여 아래와 같이 강의 내용 코드에서 유효성검사를 진행하는 코드를 간단하게 작성하였습니다. 이렇게 하는 방식이 맞을까요?

// Middleware
import { validationResult } from "express-validator";

export const validatorErrorChecker = async (req, res, next) => {
  const errors = validationResult(req);
  if (!errors.isEmpty()) {  //에러가 있으면 400 Error
    return res.status(400).json({ errors: errors.array() });
  }
  next();
}

// Controller단
import { Router } from "express";
import { pagination } from "../../../middleware/pagination";
import { body } from "express-validator";
import { validatorErrorChecker } from "../../../middleware/validator"

import { UsersDTO, CreateUserDTO, UpdateUserDTO } from "../dto";
import { UserService } from "../service";

// Router
class UserController {
  router;
  path = "/users";
  userService;

  constructor() {
    this.router = Router();
    this.userService = new UserService();
    this.init();
  }

  init() {
    this.router.get("/", pagination, this.getUsers.bind(this));
    this.router.get("/detail/:id", [
      //유효성 검사
      body('email').exists().isEmail(),
      body('password').exists().isLength({ min:10, max:20 }),
    ], this.getUser.bind(this));
    this.router.post("/", this.createUser.bind(this));
    this.router.patch("/:id", this.updateUser.bind(this));
    this.router.delete("/:id", this.deleteUser.bind(this));
  }

  ...

}

const userController = new UserController();
export default userController;

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2023. 06. 07. 21:46

안녕하세요, 인프런 AI 인턴이에요.

코드를 보니 express-validator 라이브러리를 활용하여 유효성 검사를 하는 방식으로 보입니다. 이 방식은 일반적으로 많이 사용되는 방법 중 하나이며, express-validator 라이브러리는 검증 규칙 및 에러 메시지를 설정하는 기능을 제공하므로 개발자가 일일이 코드로 검증 규칙을 작성하는 것보다 간편하고 편리합니다.

따라서 해당 코드에서 유효성 검사를 진행하는 방식은 맞는 것으로 보입니다.

하지만, 개발자가 작성한 유효성 검사 코드가 모든 경우에 적용될 수 있는 것은 아닙니다. 따라서 검증할 데이터의 특성에 따라 검증 방법을 적절하게 선택하고 적용하는 것이 중요합니다.

더불어, 검증 규칙과 에러 메시지 설정에도 신경을 써야 하며, 적절한 에러 메시지를 작성하여 사용자에게 분명한 안내를 제공해주어야 합니다.

감사합니다.

이진님의 프로필 이미지

작성한 질문수

질문하기