앞장에서 프로바이더가 무엇인지 알아보았고 간단한 서비스를 코드로 작성하였습니다. 이번에는 앞장에서 배운 내용을 토대로 interface, controller, service 그리고 module까지 완성하여 프로바이더가 어떻게 쓰이는지 알아보도록 하겠습니다.
interface
아래의 service와 controller에서 사용하기 위해 Cats interface를 생성하여 Cats에 대한 name과 age를 쉽게 전달할 수 있게 만들었습니다.
service
$nest g service cats
위의 명령어를 입력하여 cats라는 이름의 service를 생성하였습니다. Castservice 클래스를 @Injectable() 데코레이터로 장식하였습니다. @Injectable() 데코레이터는 메타 데이터를 첨부하여 이 클래스가 Nest provider라는 것을 Nest에게 알려줍니다. create()와 findAll() 메소드를 사용하여 cats에 대한 데이터를 생성하고 조회할 수 있습니다.
controller
controller는 앞장에서 여러번 언급했듯이, 요청을 받고 그에 상응하는 응답을 반환합니다. 이번에는 앞장에서와 달리 async를 사용하여 비동기 처리를 할 수 있도록 메소드를 작성하였고 Promise 객체를 반환할 수 있도록 타입을 정했습니다. (비동기 처리에 대해서는 나중에 더 자세히 설명하도록 하겠습니다~!)
module
우리는 CatsService라는 이름의 provider를 정의했고, CatsController를 통해 요청과 응답을 반환할 수 있도록 @Module() 데코레이터에 controllers와 providers 배열에 위와 같이 추가해주어야 합니다. 이제는 appModule에서 CatsModule을 불러와서 import 하면 Cats와 관련된 컴포넌트를 사용할 수 있습니다.
'Nestjs' 카테고리의 다른 글
[Nestjs] 4-3. 속성 기반 주입(property based injection) (0) | 2022.04.23 |
---|---|
[Nestjs] 4-2. DI(Dependency Injection)?? 의존성 주입?? (0) | 2022.04.21 |
[Nestjs] 4. 프로바이더 (0) | 2022.04.10 |
[Nestjs] 3-4. payload 다뤄보기 (0) | 2022.04.03 |
[Nestjs] 3-3. 라우터 파라미터 (0) | 2022.04.02 |