> Backend/NestJS

005_NestJS_NestJS CLI를 사용한 Controller 만들기

Janku 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