들어가기에 앞서
[1] 사용하는 스택은 다음과 같습니다.
-
NodeJS
-
Typescript
-
NestJS
-
TypeORM
-
Mysql (or MariaDB)
-
Redis
[2] 프로젝트 요구사항
- NodeJS 가 기본적으로 설치가 되어있어야 합니다.
- NestJS는 V8.9.0 이상을 요구하고 있습니다. (저는 v8.15 사용 중입니다.)
- 데이터베이스는 Mysql를 사용합니다.
프로젝트에서 사용되는 모든 내용은 NestJS Doc에 있는 내용을 기반으로 합니다. 만약 이해가 안 되는 내용이 있을 경우 해당 레퍼런스를 체크하시면 좋을 것 같습니다!
프로젝트 환경 구축 하기
1. 먼저 NestJS CLI를 글로벌로 설치해줍니다.
npm install -g @nestjs/cli
2. NestJS CLI를 활용하여 새 프로젝트를 생성합니다.
프로젝트 이름은 board-api라고 하겠습니다.
nest new board-api
3. 프로젝트 폴더로 이동하면 다음과 같이 프로젝트 구조가 잡힌 것을 볼 수 있습니다.
nest-cli.json node_modules nodemon.json nodemon-debug.json package.json README.md src test tsconfig.build.json tsconfig.json tslint.json yarn.lock
4. 패키지를 설치해줍니다.
- mysql, typeorm, redis 관련 패키지를 추가해줍니다.
yarn add @nestjs/typeorm typeorm mysql @types/redis redis
- mysql, redis, typeorm 관련 설정은 다음 챕터에서 진행하겠습니다
5. 프로젝트 실행해보겠습니다
우선 Package.json에서 프로젝트 스크립트 부분만 살펴보겠습니다.
{
"scripts": {
"build": "tsc -p tsconfig.build.json",
"format": "prettier --write \"src/**/*.ts\"",
"start": "ts-node -r tsconfig-paths/register src/main.ts",
"start:dev": "nodemon",
"start:debug": "nodemon --config nodemon-debug.json",
"prestart:prod": "rimraf dist && npm run build",
"start:prod": "node dist/main.js",
"lint": "tslint -p tsconfig.json -c tslint.json",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json"
}
}
보시다시피 빌드, 포맷, 테스트를 진행하는 여러 스크립트 명령이 있고, 실행 명령어를 보면 start, start:dev, start:prod와 같이 3가지의 명령어가 있습니다.
- start - typescript로 작성되어있는 서버를 실행
- start:dev - nodemon을 활용하여, 소스코드가 변경될 시 서버를 자동으로 재실행함
- start:prod - build 명령어를 통해 컴파일되어 생성된 js 파일을 실행시키는 프로덕션 실행 명령어
지금은 개발 단계이므로 start:dev 명령어를 통해 서버를 실행시켜 보겠습니다.
yarn start:dev
NestJS의 경우 core에서 기본적으로 Logger를 제공하며 해당 Logger를 기본으로 사용합니다. 서버를 실행시키면 다음과 같이 NestJS의 기본 Logger로 서버 실행 로그가 출력됩니다.
로그 내용 중 AppController라는 Router Resolver가 바인딩된 것을 확인할 수 있으며, 바로 그다음 출력에는 / url에 GET 메서드가 맵핑된 것을 알 수 있습니다.
이와 같이 NestJS는 각 Controller들이 바인딩되고 해당 Controller 내부에서 처리하는 로직들의 request url과 http method를 출력합니다.
마지막으로 Nest application successfully started 로그가 출력되면 서버가 성공적으로 실행된 것입니다.
6. App Controller에 Request 날려보기
NestJS CLI를 통해 프로젝트를 생성하고 별도의 수정 없이 서버를 실행시키면, 기본 포트인 3000번을 통해 서버가 실행됩니다.
위와 같이 Post Man으로 Request를 전송하여 응답으로 Hello World가 출력되면 성공입니다.!
(짝~! 짝~! 짝~!)
'Programming > Nodejs' 카테고리의 다른 글
[NodeJS] APK 파싱 (2) | 2019.06.03 |
---|---|
[NestJS] AWS S3 Image Upload (0) | 2019.06.03 |
NodeJS AES 256 암복호화 코드 (3) | 2019.06.03 |
[NestJS 기반 게시판 REST API 만들기] 3. 회원가입 및 로그인, 파라미터 검증 및 예외 처리 (6) | 2019.05.08 |
[NestJS 기반 게시판 REST API 만들기] 2. 회원가입 및 로그인 기능 을 위한 DB 연동 (3) | 2019.04.30 |