Fastify 서버 생성

byron1st·2021년 8월 17일
0

Fastify 사용기

목록 보기
1/3

Fastify 장점

Fastify 는 이름에서 알 수 있듯이, 빠른 속도를 내세우는 node.js 웹서버 프레임워크이다. 속도는 본인들의 벤치마크에 따르면, express 대비 약 4배, koa 대비 약 1.6배 빠르다.

빠른 속도 외에도, 여러 장점이 있는데, 내가 눈여겨본 장점은 다음과 같다:

  • 좋은 공식 문서
  • 뛰어난 TypeScript 지원
  • JSON Schema 문법을 이용한 Request validation
  • 아주 편리한 Swagger 통합
  • 기본 Logger 제공
  • 손쉬운 jwt, cors 미들웨어 통합

Fastify 서버 생성

Fastify 의 서버 객체는 express 와 유사하게 생성하고 실행한다.

import fastify, { FastifyInstance } from 'fastify'

const server: FastifyInstance = fastify()

fastify 생성자에 파라미터로 이것저것 넘겨줄 수 있다. 난 기본 Logger 사용 설정과, Request Body 사이즈 제한값만 추가하였다. 이 외에 다양한 옵션들이 가능하니 참고하도록 하자.

import fastify, { FastifyInstance } from 'fastify'

const server: FastifyInstance = fastify({
  bodyLimit: 10485760,
  logger: true
})

Fastify 기본 Logger

참고로 기본 Logger 는 기본적으로 JSON 형태의 구조화된 로그를 콘솔창에 출력한다.

{"level":30,"time":1629171047623,"pid":62407,"hostname":"morphism0ui-MacBookPro.local","msg":"Server listening at http://0.0.0.0:8090"}

기본적으로 Request, Response 를 기록하며, 코드 중간에 로그를 기록하고 싶다면, request 객체에서 log 속성값을 꺼내 사용할 수 있다.

request.log.error(err)
request.log.info('Hello, world!')

Fastify CORS

CORS 설정을 위해서는 Fastify 팀에서 개발하는 fastify-cors 패키지를 설치해야 한다. express와 비슷하게, Fastify 에서도 CORS, JWT 등은 모두 미들웨어로 구현된다. 그리고 이러한 미들웨어는 (당연히) 개인이 직접 개발해서 추가할 수도 있다. 미들웨어를 등록하기 위해서는 express.use 와 비슷한 register 라는 함수가 있다.

import cors from 'fastify-cors'

const server: FastifyInstance = fastify()

server.register(cors, { origin: '*' })

필요한 CORS 설정은 왠만한건 다 할 수 있으니, fastify-cors 패키지 저장소의 문서를 참고하자.

Fastify 서버 실행

대충 적당히 설정이 끝나면, 아래 코드를 이용하여 서버를 실행할 수 있다.

server.listen(8080, '0.0.0.0')

기본 Logger 가 설정되어 있다면, 자동으로 아래와 같이 서버 실행 로그를 찍는다.

{"level":30,"time":1629171047623,"pid":62407,"hostname":"morphism0ui-MacBookPro.local","msg":"Server listening at http://0.0.0.0:8090"}

또한, listen 함수는 Promise<string> 을 반환하는데, 이때 string 은 서버가 실행되는 주소값으로, http://0.0.0.0:8080과 같은 값을 갖는다.

profile
Fullstack software engineer specialized for Blockchain

0개의 댓글