ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Nest.js Api만들기 2 (Controller)
    FrameWork/Nest.js 2022. 6. 16. 14:51

    Controller 

    Nest.js 어플리케이션은 main.ts 파일에서 시작한다. 

    위 그림은 코드 처럼 하나의 모듈에서 어플리케이션을 생성한다. AppModule은 모든 것의 root  module같은 것이다. module은 어플리케이션의 일부분이다. 한가지 역학을 하는 앱으로도 볼 수가 있는데,

     

    예)  

    users 모듈 - 인증을 담당하는 어플리케이션

    photos 모듈 - 사진을 담당하는 어플리케이션

    videos 모듈 - 비디오를 담당하는 어플리케이션

     

     

    controller

    url을 가져오고 함수를 실행하는 것이다. express의 라우터 같은 존재이다. controller의 특정 함수에 @Get 이 붙어 있는 것을 볼 수 있는데, express의 라우터 역할을 한다. 

    controller는 url로 요청을 받는다. 여기서 url"/hello"가 된다. 데코레이터 덕분에 NestJS는 누군가가 /hello로 들어오면, sayHello라는 함수를 실행해야 한다는 걸 알고 있다.

     

    위 그림과 같이 "/hello" url을 요청하면 데코레이터와 매칭된 함수가 string "Hello everyone"을 return하는 것을 확인 할 수 있다.

     

    그럼, 그냥 controller에서 Hello everyone을 리턴 할 수 있다면, 서비스가 왜 필요할까?

    => 구조아키텍처

     

    Nest.js는 controller를 비지니스 로직과 구분 짓고 싶어 한다. controller는 그냥 url을 가져오는 역할과 function을 실행하는 역할뿐이다. 그리고 나머지 비지니스 로직은 service로 간다. service는일반적으로 실제로 function을 가지는 부분이다.

     

    AppService를 정의하는 file로 가면 AppService class에 간단한 function이 들어 있는 것을 확인 할 수 있다.

     

    Module

    우선 모듈이 있다. 여기선 root module인 AppModule이 있다.

     

    오직 하나의 모듈만 있을 수 있는데  AppModule이 바로 그것이다. 무엇을 만들던지 결국엔 AppModule에 들어 갈 것이다. 왜냐하면 AppModule은 NestJS가 어플리케이션을 만들기 위해 이용하는 것이다.

     

    나만의 모듈 만들기

    app.service.ts와 app.controller.ts를 삭제한다.

     

    그럼 src 폴더에는 app.module.ts와 main.ts file만 남게 된다. 또 한 app.module.ts는 아무것도 import하고 있지 않게 된다.

    => 나만의 module을 만들기 위한 준비

     

    [출처- https://nomadcoders.co/nestjs-fundamentals/lectures/1944]

    댓글

Designed by Tistory.