[개발] NestJS - Controller

이전 글


출처 : https://docs.nestjs.com/controllers

컨트롤러는 요청(request)을 처리하고 응답(response) 을 클라이언트에 반환합니다.

컨트롤러의 목적은 애플리케이션에 대한 특정 요청을 수신하는 것입니다. 라우팅 메커니즘은 어떤 컨트롤러가 어떤 요청을 수신하는지 제어합니다. 종종 각 컨트롤러에는 둘 이상의 경로가 있으며 다른 경로는 다른 작업을 수행 할 수 있습니다. 기본 컨트롤러를 생성하기 위해 클래스와 데코레이터(@)를 사용합니다. 데코레이터는 클래스를 필수 메타 데이터와 연결하고 Nest가 라우팅 맵을 만들 수 있도록합니다 (요청을 해당 컨트롤러에 연결).

CLI를 사용하여 컨트롤러를 만들려면 $ nest g controller cats 명령을 실행하면됩니다.
( app.module.ts 파일에 자동으로 해당 controller 가 추가됨 :) 일명 보일러 플레이트 기능이라 하는데 익숙해 지면 생산 속도 및 코드의 일관성을 유지 시켜 주기 때문에 자주 사용하면서 익숙해 지는 것을 권장 합니다. )

Nest는 @Get (), @Post (), @Put (), @Delete (), @Patch (), @Options () 및 @Head ()와 같은 모든 표준 HTTP 메서드에 대한 데코레이터를 제공합니다. 또한 @All ()은 이들 모두를 처리하는 엔드 포인트를 정의합니다.

@Param ()은 메서드 매개 변수 (위 예제의 매개 변수)를 장식하는 데 사용되며, 경로 매개 변수를 메서드 본문 내에서 장식 된 메서드 매개 변수의 속성으로 사용할 수 있도록합니다. 위의 코드에서 볼 수 있듯이 params.id를 참조하여 id 매개 변수에 액세스 할 수 있습니다.

POST 라우트 핸들러에서는 @Body () 데코레이터를 추가하여이 전송한 데이터를 바인딩 할 수 있습니다. 이를 사용하기 위해 DTO (Data Transfer Object) 스키마를 결정 후 Controller 내부에서 새로 생성 된 DTO를 사용할 수 있습니다.

컨트롤러는 항상 모듈에 속하므로 @Module () 데코레이터 내에 컨트롤러 배열을 포함하여 사용할 수 있습니다.


맺음말

컨트롤러 정말 짧게 정리 해보면 요청의 호출 주소정보 기준으로 Route (경로) 를 지정 받아 해당 요청을 타입( Get / Post / Put / Delete : 사실 put, get 정도만 쓰죠 보통 ㄷ )에 맞게 처리하는 곳이라 볼 수 있겠습니다.

본문의 링크 보면 아시겠지만 정말 내용이 많은 chapter 입니다. 하지만 사실 기존 spring 에서 @Controller Component 를 경험 해본 사람이라면 아 ~ 비슷하네 라는 느낌을 갖을 수 있기때문에 중요 내용만 일부 발췌하여 기술 하였으며 대다수의 내용을 생략 하였으니 위 명시된 원문링크를 통해 내용 및 예제를 참조 바랍니다.

Sort:  

오 정말 스프링 같네요. 실제로 한번 해봐야 겠지만, 좋으네요.

@wonsama transfered 1.0 KRWP to @krwp.burn. voting percent : 10.15%, voting power : 59.41%, steem power : 2008979.96, STU KRW : 1200.
@wonsama staking status : 822.929 KRWP
@wonsama limit for KRWP voting service : 0.822 KRWP (rate : 0.001)
What you sent : 1.0 KRWP
Refund balance : 0.178 KRWP [50124275 - 6996b784c40232afbf5736e154aea3661283128a]

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.080
BTC 61943.49
ETH 1656.22
USDT 1.00
SBD 0.47