Skip to content
Kim Seohyun edited this page Aug 8, 2022 · 8 revisions

목차

[00장] 들어가기 전에

[01장] NestJS 둘러보기

1.1 NestJS 소개
1.2 Express가 좋을까 NestJS가 좋을까?
1.3 NestJS 설치
1.4 이 책에서 만드는 애플리케이션 - 유저 서비스

[02장] NestJS를 위한 선수 지식

2.1 웹 프레임워크
2.2 Node.js
2.3 이벤트 루프
2.4 패키지 의존성 관리
2.5 Typescript
2.6 데코레이터

[03장] 애플리케이션의 관문 - 인터페이스

3.1 컨트롤러(Controller)
3.2 유저 서비스의 인터페이스


## 04장 핵심 도메인 로직을 포함하는 프로바이더 _4.1 프로바이더(Provider) _ _4.2 프로바이더 등록과 사용 _ * 속성(Property) 기반 주입 _4.3 유저 서비스에 회원가입 로직 구현하기 _

_쉬어가는 페이지 - 스코프 (Scope) _ _심화학습 1 - 커스텀 프로바이더 (Custom Provider) _

## 5장 SW 복잡도를 낮추기 위한 모듈 설계 5.1 모듈(Module) - 응집성 있는 설계 * 모듈 다시 내보내기 * 전역 모듈(Global Module) _5.2 유저 서비스의 모듈 분리 _

## 6장 동적 모듈을 활용한 환경변수 구성 _6.1 동적 모듈(Dynamic Module) _ _6.2 dotenv를 이용한 Config 설정 _ _6.3 Nest에서 제공하는 Config 패키지 _ _6.4 유저서비스에 환경변수 구성하기 _

쉬어가는 페이지 - DI와 IoC

## 7장 파이프와 유효성 검사 - 요청이 제대로 전달되었는가 _7.1 파이프(Pipe) _ _7.2 파이프의 내부 구현 이해하기 _ _7.3 유효성 검사 파이프 만들기 _ _7.4 유저서비스에 유효성 검사 적용하기 _ * 유저 생성 본문의 유효성 검사 * class-transformer 활용 * 커스텀 유효성 검사기 작성

쉬어가는 페이지 - 인증 vs 인가

## 8장 영속화 - 데이터를 기록하고 다루기 _8.1 데이터베이스(MySQL) 설정 _ _8.2 TypeORM으로 데이터베이스 연결 _ _* ormconfig.json 활용 _ _8.3 회원 가입을 요청한 유저의 정보 저장하기 _ _8.4 트랜잭션 적용 _ * QueryRunner 클래스를 사용하는 방법 _* transaction 객체를 생성해서 이용하는 방법 _ _8.5 마이그레이션 _

쉬어가는 페이지 - 리포지토리 패턴

## 9장 요청과 응답을 입맛에 맞게 바꾸는 미들웨어 _9.1 미들웨어 (Middleware) _ _9.2 Logger 미들웨어 _ _9.3 Middleware Consumer _ _9.4 전역으로 적용하기 _

## 10장 권한 확인을 위한 가드 - JWT 인증/인가 _10.1 가드(Guard) _ _10.2 가드를 이용한 인가 _ 10.3 인증 * 세션을 이용한 인증 _* 토큰을 이용한 인증 _

_10.4 JWT(JSON Web Token) _ 10.5 유저서비스의 이메일 인증 처리와 JWT 발급 * 회원가입 이메일 인증 * 로그인 * JWT 인증 - 회원 정보 조회 _* 가드를 이용한 인가 처리 _

_쉬어가는 페이지 - 슬라이딩 세션과 리프레시 토큰 _ _심화학습 - 커스텀 매개변수 데코레이터 _ 심화학습 - Reflection and metadata

## 11장 로깅 - 애플리케이션의 동작을 기록한다 _11.1 로깅(Logging) _ _11.2 내장 로거 _ _11.3 커스텀 로거 _ 11.4 유저 서비스에 winston 로거 적용하기 * nest-winston * Nest Logger를 대체하기 * 부트스트래핑까지 포함하여 Nest Logger 대체하기 * 로그 전송을 다양하게

## 12장 모든 것은 항상 실패한다 - 예외 필터 _12.1 예외 처리 _ _12.2 예외 필터(Exception filter) _ 12.3 유저서비스에 예외 필터 적용하기

## 13장 인터셉터로 요청과 응답을 입맛에 맞게 바꾼다 _13.1 인터셉터(Interceptor) _ _13.2 응답과 예외 매핑 _ _13.3 유저서비스에 인터셉터 적용하기 _

쉬어가는 페이지 - 요청/응답 생명주기

## 14장 - 태스크 스케줄링 _14.1 @nestjs/schedule 패키지 _ _14.2 태스크 스케줄링을 선언하는 3가지 방식 _ _14.3 동적 태스크 스케줄링 _

## 15장 헬스 체크 - 댁의 서버는 건강하신가요 _15.1 Terminus 적용 _ _15.2 HTTP 헬스 체크 _ _15.3 TypeOrm 헬스 체크 _ 15.4 커스텀 상태 표시기

## 16장 CQRS를 이용한 관심사 분리 _16.1 CQRS 패턴 _ 16.2 유저서비스에 CQRS 적용하기

## 17장 클린 아키텍처 _17.1 클린 아키텍처 _ _17.2 SOLID - 객체 지향 설계 원칙 _ 17.3 유저서비스에 클린 아키텍처 적용하기

## 18장 자동화 테스트 _18.1 소프트웨어 테스트 _ _18.2 Nest의 기본 테스트 프레임워크 - Jest, SuperTest _ 18.3 유저 서비스 테스트

## 부록 - ormconfig.json 동적 생성