-
NestJS로 구현하는 Authentication & Authorization(1)개발이야기 2021. 3. 26. 22:44
이 포스트는 NestJS를 사용하여 로그인 API를 구현하는 방법을 정리한 글이다. NestJS 의 공식문서를 참고하였으며 passport, typeorm 을 사용한다. 아래와 같이 4개의 글로 나누어 작성하였으며 이 글에서는 첫번째로 개발환경을 구성하는 방법을 정리하였다.
전체 코드는 github에 업로드 되어 있다.
1. Nest.js 란?
NestJS 는 쉽고 효율적으로 node.js server-side application을 개발할 수 있게 도와주는 프레임워크이다.
Javascript 뿐 만 아니라 Typescript 를 지원한다. 기본적으로 Express 를 사용하며
Express 보다 좀 더 속도가 빠른 Fastify 를 지원한다.2. 개발환경 구축
2.1 NestJS 설치
npm i -g @nestjs/cli
NestJS는 명령어를 통해 간단하게 설치할 수 있다.
2.2 Database 설치
로그인 API 에 사용할 데이터베이스를 구축한다. mariadb 를 사용하였으며 원하는 다른 db 를 설치해도 무관하다.
mariadb 구축은 docker 를 사용하였다.
#docker-compose-mariadb.yaml services: mariadb: image: mariadb:latest container_name: dev-mariadb restart: always ports: - 3316:3306 environment: TZ: Asia/Seoul MYSQL_ROOT_PASSWORD: ${MY_PASSWORD} MYSQL_USER: ${MY_USERNAME} MYSQL_PASSWORD: ${MY_PASSWORD} command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci - --skip-character-set-client-handshake volumes: - ./dev-mariadb/data:/var/lib/mysql
mariadb 를 구동하기 위해 docker-compose.yaml 을 작성한다.
외부 3316 포트를 내부 3306 포트와 연결하였으며 mariadb 구동에 필요한 환경변수를 적절히 설정한다.
docker container가 중지되더라도 db의 데이터가 날아가지 않도록 원하는 디렉토리에 볼륨매핑을 설정한다.docker-compose -f docker-compose-mariadb.yaml up -d
docker-compose 를 사용하여 mariadb container 를 구동한다.
2.3 NestJS 프로젝트 생성
CLI 를 통해 NestJS 프로젝트를 편리하게 생성할 수 있다.
nest new nestjs-auth
원하는 디렉토리에서 위 명령어를 입력하여 nest-auth 프로젝트를 생성한다.
프로젝트의 이름은 원하는대로 변경이 가능하다.
3. 프로젝트 구조
src |--app.controller.spec.ts |--app.controller.ts |--app.module.ts |--app.service.ts |--main.ts
생성된 프로젝트의 src 디렉토리를 보면 기본적으로 위와 같은 파일이 생성된다.
- controller : route 처리
- *.spec.ts : 테스트 파일
- service : 비즈니스 로직
- module : controller, service 관리
- main : application 실행
'개발이야기' 카테고리의 다른 글
Apache Httpd Configuration 정리 (0) 2021.08.16 docker를 활용한 apache-tomcat 이중화 서버 구현 (0) 2021.05.13 Nestjs로 구현하는 Authentication & Authorization(4) (0) 2021.04.11 Nestjs로 구현하는 Authentication & Authorization(3) (3) 2021.04.11 Nestjs로 구현하는 Authentication & Authorization(2) (1) 2021.03.26