8. Node 가계부 만들기 [ 유저 기능 (회원 가입) 전송 받은 데이터 유효성 검사 ] - 5

2022. 5. 28. 18:48프로젝트/가계부 - 제작 JavaScript

서비스 코드 :  https://crispypotato.tistory.com/216

서비스 코드 까지 작성하면 기능 구현은 끝났다 하지만!!

 

프론트에서 잘못된 데이터를 보내거나 필요 데이터를 빼먹었을 때 버그가 발생한다.

이 때 전송 받고 잘못된 데이터가 들오거나 형식이 잘못됬다는 에러를 보내야 한다.

 

유효성 검사를 깔끔하고 쉽게 하기 위해 express-validator 라이브러리를 사용한다.

express-validator 사용 방법 : https://crispypotato.tistory.com/212

 

1. /lib/validator.js 파일 생성 

validator.js 생성

2. validator.js 에러처리 코드 작성

 

Validator에서 에러처리

/lib/validator.js

const { validationResult } = require('express-validator')
const httpError = require('http-errors')

const Validator = (req, res, next) => {
  const errors = validationResult(req)
  if (!errors.isEmpty()) {
    throw httpError(400)
  }
  next()
}

module.exports = { Validator }

 

3. /user 에서 전송 받는 데이터 검사 목록 작성

//users.validators.js

const { param, body } = require('express-validator')

const IdParam = param('id').notEmpty().isLength({ min: 2, max: 10 })

const IdBody = body('id').notEmpty().isLength({ min: 2, max: 10 })
const Pwd = body('pwd').notEmpty()

module.exports = { IdParam, IdBody, Pwd }

 

4. 만든 users.validators.js 목록  users.route.js에 적용

//users.route.js

const express = require('express')
const router = express.Router()
const { Validator } = require('../../lib/validator')
const { CheckUserId, CreateUser } = require('./users.service')
const { IdParam, IdBody, Pwd } = require('./users.validators')

router.get('/:id', [IdParam, Validator], CheckUserId)
router.post('/signup', [IdBody], [Pwd, Validator], CreateUser)

module.exports = router

 

 

728x90
반응형