Koa를 활용한 웹 프레임워크 기본: Rest API

JaruKim·2021년 9월 7일
1
post-thumbnail

개요

최근 Node와 React를 활용한 그룹웨어 개발 프로젝트를 진행하게 되었습니다. 저는 관리자 페이지를 담당하게 되었는데 이미 짜여져 있는 Node 웹 프레임워크가 잘 정리되어 있더군요. 그래서 다른 Node 프로젝트를 할 때 써먹을 일이 있지 않을까 싶어 정리합니다.

Koa를 기본으로 한 웹 프레임워크 세팅입니다. 아래의 기능들을 포함하고 있습니다.

  • 로그인
  • 암호화
  • JWT 토큰
  • Logging
  • 메일
  • ORM
  • 프로세스 매니징(pm2)

Koa와 관련 패키지

다음 패키지들을 설치합니다.

Koa 관련 패키지 설명

koa-body

Request Body parser입니다. Express.js의 multer와 같은 기능들을 가지고 있습니다.

koa-logger

Koa의 로깅 미들웨어입니다. 요청을 주고 응답을 받는 과정을 아래와 같은 로그로 볼 수 있습니다.

<-- GET /
--> GET / 200 835ms 746b
<-- GET /
--> GET / 200 960ms 1.9kb
<-- GET /users
--> GET /users 200 357ms 922b
<-- GET /users?page=2
--> GET /users?page=2 200 466ms 4.66kb

본 패키지를 설치할 때 주의할 점은 koa의 메이저 버전과 logger의 메이저 버전을 일치시켜야 한다는 것입니다.

koa-session

세션 미들웨어입니다. 기본적으로 쿠키를 활용하여 세션 컨트롤을 할 수 있고 브라우저의 세션저장소를 활용할 수도 있습니다.

koa-static

static 파일을 다루기 위한 미들웨어입니다. koa-send라는 미들웨어를 포함하고 있습니다.
koa-send는 static 파일을 전송할 때 사용하는 미들웨어입니다.

koa2-cors

해당 패키지는 koajs에서 제공하는 미들웨어가 아닙니다. koa에서 cors를 컨트롤하기 위한 패키지입니다.

Koa 이외 패키지

패키지 설명

crypto-js

표준암호화 자바스크립트 라이브러리 패키지입니다.

jsonwebtoken

JWT을 구현하기 위한 라이브러리입니다.

node-cache

캐싱을 위한 패키지입니다. 자주 사용하는 데이터를 하나의 오브젝트에 보관하고 key-value 방식으로 사용합니다.

웹 프레임워크에서는 자주 요청하는 DB의 데이터를 캐시 오브젝트에 저장해놓고 요청이 들어올 때 DB에서 데이터를 찾기 전에 캐시 오브젝트에서 먼저 찾는 방식으로 활용합니다. 만약 캐시 오브젝트에 데이터가 있다면 해당 데이터를 꺼내 응답하면 되고, 반대로 데이터가 없다면 DB에서 데이터를 찾아 반환합니다.

nodemailer

메일 전송을 위한 패키지입니다.

sequelize

ORM을 구현한 패키지입니다.

pm2

node 프로세스를 데몬으로 관리할 수 있도록 만들어주는 패키지입니다. 노드는 기본적으로 싱글 쓰레드로 동작하는데 pm2를 사용하면 여러 Node 프로세스를 구동할 수 있습니다.

참고로 개발 중 console log를 보기 위해선 pm2를 실행할 때 --no-daemon 옵션을 추가해야합니다.

winston

노드 기반 로그 라이브러리입니다. console, file, http, stream, DB 등의 네트워킹과 전송 로그를 컨트롤할 수 있습니다.

moment

winston과 같이 사용하기 위한 시간 포멧 라이브러리입니다. winston으로 출력할 로그의 시간 포멧을 moment로 설정하여 winston.format과 조합할 수 있습니다.

0개의 댓글