@Controller(): express의 app.use('/', router) 에서 '/'와 같은 역할을 합니다. @Controller('req') 이렇게 인자로 string을 넘겨주면 express에서 app.use('/req', router) 처럼 코드를 작성한 것과 같습니다.
@Get(): Route 핸들러(메서드) 데코레이터입니다. HTTP GET 요청을 지정된 경로로 라우팅 합니다. @Get('hello') 이렇게 인자로 string을 넘겨주면 express 에서 router.get('/hello', sayHello) 처럼 코드를 작성한 것과 같습니다.
Providers
Provider는 Nest의 기본 개념입니다. 대부분의 기본 Nest Class 인 services, repositories, factories, helpers 등은 provider로 취급될 수 있습니다. provider는 단순히 @Injectable() 데코레이터가 달린 클래스입니다.
위의 AppController 생성자에 변수의 타입을 AppService 로 지정해 줌으로써 Nest Injector 가 appService 변수를 AppService의 인스턴스로 만들어줍니다(인스턴스화한다).
Modules
NestJS 에는 모듈이 있습니다. @Module() 데코레이터로 모듈을 만들 수 있습니다.
Nest 어플리케이션을 만들면 최소 하나의 모듈, 루트 모듈(AppModule)이 있습니다.
이 루트 모듈은 Nest가 Module 및 Provider 관계와 의존성을 해결하는 데 사용하는 내부 데이터 구조를 구축하는 시작점입니다. 모듈을 만들면 루트 모듈과 연결되어야 합니다.