ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 005_NestJS_NestJS CLI를 사용한 Controller 만들기
    > Backend/NestJS 2022. 5. 16. 13:42

    이제는 Controller를 만들어보도록 하겠습니다.

    terminal에 "nest generate controller messages/messages --flat"를 입력해봅니다.

    해당 명령어를 까보면, 아래와 같이 설명할 수 있다. 

     

    1. nest generate : 기본적인 생성 명령어
    2. controller: nestcli를 사용해 만들 클라스
    3. messages/... : messages폴더 안
    4. messages/messages:  messages 폴더 안에 messages라는 클라스를 만듦
    5. --flat: controllers라는 디렉터리/폴더를 추가로 만들지 않는다. (안붙여도 되지만, 그렇게되면 추가적으로 controllers라는 폴더가 생성됨)

     

    messages.controller.ts

     

    현재 src 내 디렉토리

     

     

    이제, Controller를 본격적으로 한번 만들어 봅시다.

    우선, Controller에는 아래와 같이 3가지 하위 controller를 만들어봅시다.

     

     

    하위 controller

     

    각 controller는 각각 전체 보기/메시지 넣기/특정메세지 보기로 만들 예정입니다. 

     

    messages.controller .ts

     

    이후, nestjs/common에서 Get 과 Post를 import하고 decorator를 설정해줍니다.

    위에 보시면, 

     

    여기서 주목해봐야할 것은,

    1. Decorator 입니다.

    2. /:id 

     

    1번의 경우, Controller Decorator는 @Controller('messages') 라고 되어있고, 3번째 하위 Controller인 getMessage는 @Get('/:id')라고 설정되어있는데, getMessage()를 활용하기위해서는 localhost:3000/messages/id값을 사용하면 됩니다.

     

    "@Controller 데코레이터를 클래스에 선언하는 것으로 해당 클래스는 컨트롤러의 역할을 하게 됩니다.  또한, @Get 데코레이터를 가지고 있습니다. 그리고 다른 루트 경로로 요청을 보내면 404 Not found 에러를 만나게 됩니다.

     

     

    2번의 경우, /:id 에서 :id라는 wildcard를 활용해서, 이후 오는 값은 어떤 값이라도 될 수 있다는 것을 명시해줍니다.

    단 이때, localhost:3000/messages/123321 일경우, 아래와 같이 값이 넘어져 옵니다. 해당 부분을 __ //_ // * 등 목적에 따라 다양한 방법을 사용할 수 있지만, 해당 부분은 구글링해서 찾아보도록 합시다. 

     

    {

       id: 123321

    }

     

     

     

    이제, 넘겨져오는 데이터에대해 Pipes를 통해 유효성 검사를 진행해봅시다. 

     

     

     

     

     

     

     

     

    참조: https://wikidocs.net/148197

     

    '> Backend > NestJS' 카테고리의 다른 글

    007_NestJS_Service 와 Repository  (0) 2022.05.18
    006_NestJS_Pipes를 활용한 Validation Check  (0) 2022.05.16
    004_NestJS_BasicSetup(using NestCLI)  (0) 2022.05.16
    003_NestJS_Scratch  (0) 2022.05.16
    002_NestJS_setup(without using NestCLI)  (0) 2022.05.16

    댓글

Designed by Tistory.