NestJS의 핵심 개념들을 내 나름대로 이해하기 편한 수준에서 정리해본다.
Controller와 Provider등을 합쳐놓은 덩어리로, nest application 구조를 구성하는 기본단위라고 할 수 있다.
A module is a class annotated with a @Module() decorator. The @Module() decorator provides metadata that Nest makes use of to organize the application structure. - 공식문서
Request와 Response를 다루는 영역으로, Nest에서는 일종의 라우터의 역할을 한다
Controllers are responsible for handling incoming requests and returning responses to the client. - 공식문서
Service나 Resolver같은 것들을 의존성으로 주입해준다.
Providers are a fundamental concept in Nest. Many of the basic Nest classes may be treated as a provider – services, repositories, factories, helpers, and so on. The main idea of a provider is that it can be injected as a dependency; this means objects can create various relationships with each other, and the function of "wiring up" instances of objects can largely be delegated to the Nest runtime system. - 공식문서
Controller의 요청에 따라 특정 Response에 대한 비즈니스 로직을 수행한다.
일종의 미들웨어 처럼 작동한다. 주로 Validation이나 Transformation에 활용된다
Pipes have two typical use cases:
transformation: transform input data to the desired form (e.g., from string to integer)
validation: evaluate input data and if valid, simply pass it through unchanged; otherwise, throw an exception when the data is incorrect - 공식문서