npm i -g @nestjs.cli
입력sudo npm i -g @nestjs.cli
입력nest
입력하면 아래와 같은 설명서를 볼 수 있다.nest new
입력 후 엔터npm run start:dev
를 입력하면 실행된다.http://localhost:3000
을 입력하면 아래와 같은 화면을 볼 수 있다.bootstrap()
함수를 호출하고 있고, bootstrap()
함수 안에서는 app.module
파일로부터 AppModule
를 불러와서 NestFactory
가 애플리케이션 객체를 생성하고 3000 포트로 HTTP 요청을 받고 있다.http://localhost:3000
접속이 가능했던 이유이다.@Module()
데코레이터에 인자로 넘기는 객체의 imports
속성을 통해서 의존 관계를 명시해 서로 의존할 수 있다.@Module()
데코레이터 ( NestJS에서 데코레이터는 일반적으로 클래스나 메서드에 어떤 정보를 추가해줄 때 많이 활용하고 있다. ) 가 호출되고 있다.imports controllers providers
속성으로 이루어진 객체를 인자로 받는다.controllers
속성에는 HTTP 요청을 받아서 응답을 보내는 컨트롤러 클래스를 나열해 줄 수 있다.providers
속성에는 컨트롤러가 사용하는 다양한 일반 클래스를 나열해 줄 수 있다.imports
속성에는 해당 모듈이 의존하고 있는 다른 모듈을 나열해 줄 수 있다.@Controller()
데코레이터를 호출해주면 NestJS가 해당 클래스는 컨트롤러로 인식을 하게 된다.@Get() @Post() @Delete()
와 같은 HTTP 방식(method)에 해당하는 데코레이터를 붙여주게 된다.http://localhost:3000
으로 들어갔을 때, AppController
클래스의 getHello()
함수가 이를 받아서 Hello World!
라는 응답을 해줬다는 것을 알 수 있다.@Injectable()
데코레이터가 사용되고 있으며 @Injectable()
데코레이터가 붙어있는 클래스는 NestJS가 인스턴스를 생성하여 다른 클래스에 생성자를 통해서 주입해줄 수 있다.AppModule
에서 @Module()
데코레이터를 호출할 때 providers
AppService
클래스를 명시해줘서 AppController
클래스의 생성자인 인자로 AppService
클래스의 인스턴스가 주입이 되고, AppController
클래스의 getHello
메서드 내에서 AppService
클래스의 getHello
메서드를 호출할 수 있었던 것이다.