본문 바로가기

카테고리 없음

nestjs 스터디 관련 내용 정리

반응형

reflect-metadata 패키지 - 데코레이터로 rest api 만들 때  사용 

rxjs 패키지 - 비동기 및 이벤트 기반 프로그래밍 작성

 

컨트롤러 https://docs.nestjs.com/controllers

- 클라이언트에서 요청이 들어오면 응답 반환

- 여러개의 컨트롤러(클래스)를 합치는 방식으로 사용

- @Controller() 데코레이터 사용, @Controller('cats') 이런식으로 path를 추가 지정하여 path를 추가할 수 있음

- 보통 컨트롤러 안에 rest api를 @Get @Post로 작성, 각 함수내에서 xx.service.ts 내의 함수에서 비지니스 로직을 구현

- @Req(), @Body(), @Param() 등의 데코레이터를 함수 파라미터로 받아서 클라이언트 요청 정보도 바로 획득가능

 

Provider, 의존성 주입(DI) https://docs.nestjs.com/providers

- 의존성 주입 패턴

  - provider는 모듈화된 제품(서비스)를 소비자(컨트롤러) 제공하는 개념

  - provider로 취급되는 클래스는 @Injectable 데코레이터를 사용

  - 앱 컨트롤러에서 서비스 클래스를 생성자로 받아서 사용

  - 실제 생활에서 일어나는 상황을 비슷하게 묘사하여 이해하기 쉽고 확장성, 유지보수가 좋은 구조를 사용

 

Modules, 캡슐화 https://docs.nestjs.com/modules

- 위에서 말한 provider 서비스를 구현

- 명령어를 통해 모듈 생성 가능 (nest g mo cats) -  https://docs.nestjs.com/cli/usages

- 컨트롤러로 명령어도 생성 가능 (nest g co cats), 자동으로 cats 모듈에 컨트롤러 추가

- 서비스도 명령어로 생성 가능 (nest g service cats), 자동으로 cats 모듈에 프로바이더에 추가

- 컨트롤러에서 서비스를 사용하기 위해 생성자로 dependency injection는 직접 써서 사용해야 함

- nest는 기본적으로 싱글톤 패턴이지만 때에 따라서 서비스를 export해서 다른 module과 공유할 수도있다. 여러개의 모듈에서 다같이 쓰는 기능들은 Shared Module을 만들어 각 모듈에서 사용

- 다른 모듈의 service를 사용할 경우 해당 모듈에서 export로 지정하여 글로벌로 만들어서 사용하는 것도 가능

 

Middleware

- express의 미들웨어와 동일하게 동작

- 미들웨어는 dependency injection이 가능

- 서술하는 순서에 따라 영향을 받음

- 이벤트를 등록해서 특정 함수를 트리거 하는식의 미들웨어 사용도 가능

반응형