[nodejs] Fastify 요청 유효성 검사

Fastify는 Node.js를 위한 빠르고 효율적인 웹 프레임워크입니다. 빠른 속도와 낮은 부하를 가지고 있어 최신의 웹 애플리케이션의 요구사항을 충족하는 데 도움이 됩니다.

이번 글에서는 Fastify에서 요청 유효성을 검사하는 방법에 대해 알아보겠습니다.

요청 스키마 정의하기

Fastify에서 요청 유효성을 검사하기 위해서는 요청 스키마를 정의해야 합니다. 요청 스키마는 요청 본문의 구조를 정의하고 유효성을 검사하는 데 사용됩니다.

const fastify = require('fastify')({ logger: true })

fastify.post('/user', {
  schema: {
    body: {
      type: 'object',
      required: ['name', 'age'],
      properties: {
        name: { type: 'string' },
        age: { type: 'number' }
      }
    }
  }
}, (req, reply) => {
  // 요청 본문의 유효성이 검사됨
  // 유효하지 않은 경우 Fastify가 400 Bad Request를 반환함
  reply.send({ success: true })
})

fastify.listen(3000, (err, address) => {
  if (err) throw err
  console.log(`서버가 ${address} 에서 실행 중!`)
})

위의 예시에서는 /user 엔드포인트에 대한 POST 요청의 요청 본문을 검사하고 있습니다. nameage 필드를 필수 요소로 하고, name은 문자열이어야 하고, age는 숫자여야 한다고 정의되어 있습니다.

스키마 검증 오류 핸들링하기

Fastify는 기본적으로 유효성 검사 오류가 발생하면 400 Bad Request를 반환합니다. 그러나 개발자는 이를 커스터마이징하여 다양한 방식으로 오류를 핸들링할 수 있습니다.

fastify.setErrorHandler(function (error, request, reply) {
  if (error.validation) {
    // 유효성 오류에 따른 처리
    reply.code(422).send({ success: false, errors: error.validation })
  }
})

위의 코드에서는 setErrorHandler 메서드로 커스텀 오류 핸들러를 정의하고 있습니다. 이 핸들러는 유효성 검사 오류가 발생했을 때 422 Unprocessable Entity와 함께 오류 정보를 클라이언트에게 반환합니다.

Fastify를 사용하면 간단하게 요청 유효성을 검사하고 처리할 수 있습니다. 높은 성능과 함께 안정적인 웹 애플리케이션을 개발하고 싶다면 Fastify를 사용해보세요.

더 많은 정보를 원하시면 공식 Fastify 문서를 참고하십시오.