ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 003_NestJS_Scratch
    > Backend/NestJS 2022. 5. 16. 10:44

    이제, 본격적으로 NestJS가 어떻게 작동하는지 확인해봅시다. 

     

     

    HTTP에서 Request가 왔을때, 거쳐야되는 순서

     

    1.Pipe: Request에서 넘어져온 데이터가 Valid 한지, 유효성 검사

    2. Gaurd: Authentication 확인, 로그인/토큰 등 검사

    1번과 2번은 향후 다시 다루는 걸로 하겠습니다.

     

    3. Controller: Request가 넘어져오면 해당 Request를 function 과 연결해주는 친구

    4. Service: 기본적인 코딩

    5. Repository: DB과 통신해주는 친구

    4번, 5번 역시 향후 다시 다루는 걸로 하고, 3번 Controller부터 알아봅시다.

    Dextto님은 Controller에 대해 아래와 같이 설명하고 있습니다. 

     

    "Nest의 컨트롤러는 MVC패턴에서 말하는 그 컨트롤러를 말합니다. 컨트롤러는 들어오는 요청(request)를 받고 처리된 결과를 응답(response)으로 돌려주는 인터페이스 역할을 합니다. ...(중략)... 컨트롤러는 엔드포인트 라우팅(routing) 메커니즘을 통해 각 컨트롤러가 받을 수 있는 요청을 분류합니다. 컨트롤러를 사용 목적에 따라 구분하면 구조적이고 모듈화된 소프트웨어를 작성할 수 있습니다."

     

    Controller를 작동 시키기 위해서는 아래와 같은 과정을 거쳐야 합니다.

     

    1. mains.ts

    우선, 아래 사진과 같이, NestFactory를 import하고 해당 library를 사용해봅시다.

     

     

    main.ts

     

    2. app.module.ts

    아래와 같이 module를 하나 생성하고, main.ts에 import 해줍니다.

    Module이란 여러 컴포넌트를 조합하여 작성한 좀 더 큰 작업을 수행하는 단위를 말합니다. 

    없어도 되지만, AOP 관점 지향 프로그래밍을 위해서, User 관련된 내용이면 UserModule로, 결제 관련된 내용이면 PaymentModule로 묶고 나중에 AppModule에 다 엮어주면 됩니다. 

     

     

     

    https://wikidocs.net/148982

     

    대충 이런 느낌으로요.

    하지만, 우선 튜토리얼이니깐, 해당 내용은 나중에 다루도록 하겠습니다.

    Module를 만들었으면, 이제 만들 Controller를 아래와 같이 import 해줍니다.

     

     

    app.module.ts

     

     

    3. app.controller.ts

    이제 드디어 Controller 입니다. 

    아래를 보시면 @Controller('/app') 이라는 Annotation(Spring에서)/Decorator (NestJS)  Class를 생성하고 해당 내용 아래, Get/Post등 추가적인 Decorator를 넣어주고 return를 넣어주면 됩니다. 

     

     

    app.controller.ts

     

     

    이렇게 되면 localhost:3000/app/asdf 를 URL창에 입력하게 되면 'hi there'라는 response 를 받게됩니다. 

     

    여기서 갑자기 나온 Decorator는 자바의 어노테이션과 유사한 기능을 합니다

    데코레이터는..

    "클래스, 메서드, 접근자, 프로퍼티, 매개변수에 적용 가능합니다. 각 요소의 선언부 앞에 @로 시작하는 데코레이터를 선언하면 데코레이터로 구현된 코드를 함께 실행합니다." 입니다.

     

    우리는 Controller와 Get앞에만 @를 붙여서 사용했습니다.

     

    이제, 튜토리얼은 끝났고, 다음번서 부터는 CLI를 통해서 편하게 작업해봅시다. 

    댓글

Designed by Tistory.