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() 데코레이터를 호출할 때 providersAppService 클래스를 명시해줘서 AppController 클래스의 생성자인 인자로 AppService 클래스의 인스턴스가 주입이 되고, AppController 클래스의 getHello 메서드 내에서 AppService 클래스의 getHello 메서드를 호출할 수 있었던 것이다.