📎 https://velog.io/@cocorig/NestJS-데코레이터-개념과-예시-Services-NotFoundException
📎 https://nomadcoders.co/nestjs-fundamentals
📎 https://docs.nestjs.com/
NestJS 의 데코레이터(Decorator) 란?
NestJS의 데코레이터는 클래스, 메소드, 파라미터 등에메타데이터를 부착하여 특정 동작 혹은 로직을 정의하는 기능을 의미한다. 이를 통하여라우팅,요청과 응답 처리,데이터 변환등을 간결하게 설정할 수 있으며 대표적으로@Controller,@Get,@Query등이 있다.
NestJS 에서 자주 쓰이는 데코레이터 및 개념
NestJS에 존재하는 데코레이터는 크게클래스 레벨,메소드 레벨,파라미터 레벨로 나뉜다. 이는 메타데이터가 부착되는 위치를 의미한다.
→ 데코레이터가 클래스 에 사용되는 것을 의미한다.
→ 대표적으로 @Controller 데코레이터가 존재한다.
@Controller : 클래스 를 컨트롤러(Controller) 로 정의하는 것을 말한다. 해당 컨트롤러는 특정 라우트 경로를 처리(엔드포인터 처리)하는 데 사용한다.@Controller('dogs')
export class DogsController {}
→ 데코레이터가 메서드 에서 사용되는 것을 의미한다.
→ 대표적으로 @Get, @Post , @Put , @Delete 등이 있다.
→ 메소드 레벨 데코레이터는 주로 HTTP 요청 을 처리하기 위한 메소드에 매핑된다.
@Controller('dogs')
export class DogController{
@Get()
findAll(){ }
}
→ 데코레이터가 파라미터 에서 사용되는 것을 의미한다.
→ 대표적으로 @Query, @Param , @Body, @Req, @Res 등이 있다.
@Query : 쿼리 파라미터를 메소드 파라미터에 바인딩한다.@Param : URL 매개변수 를 메소드 파라미터에 바인딩 한다.@Body : 요청받은 본문(Body) 를 메소드 파라미터에 바인딩한다.@Req , @Res : 요청 혹은 응답 객체를 메소드 파라미터에 바인딩한다.@Controller('dogs')
export class DogsController{
@Get()
findAll(@Qeury('name') name : string){
return `강아지의 이름은 ${name}입니다.`;
}
@Get(':id')
findOne(@Param('id') id : string){
return `강아지의 ID는 ${id}입니다.`;
}
@Post()
create(@Body() createDogDto : CreateDogDto){
return `새로운 강아지를 입양했습니다!`;
}
}
@Controller : 클래스를 컨트롤러(Controller) 로 정의하여 특정 라우트를 처리한다.@Injectable : 클래스를 주입 가능한 서비스(Service) 로 정의하여 비즈니스 로직을 처리한다.@Module : 클래스를 모듈(Module) 로 정의하여 NestJS 를 구성하는 다양한 모듈들을 캡슐화 한다.@Catch : 예외 필터 를 정의하여 특정 예외를 처리한다.@Get : HTTP GET 요청 을 특정 메소드에 매핑한다.@Post : HTTP Post 요청 을 특정 메소드에 매핑한다.@Put : HTTP Put 요청 을 특정 메소드에 매핑한다.@Delete : HTTP Delete 요청 을 특정 메소드에 매핑한다.@Patch : HTTP Patch 요청 을 특정 메소드에 매핑한다.@Query : 쿼리 파라미터를 메소드 파라미터에 바인딩한다.@Param : URL 매개변수를 메소드 파라미터에 바인딩한다.@Body : 클라이언트 요청 본문을 메소드 파라미터에 바인딩한다.@Req , @Res : 클라이언트 요청, 응답 객체를 메소드 파라미터에 바인딩한다.@Headers : 요청 헤더를 메소드 파라미터에 바인딩한다.@Session : 세션 객체를 메소드 파라미터에 바인딩한다.@Ip : 클라이언트 요청 IP 주소를 메소드 파라미터에 바인딩한다.@HostParam : 호스트 매개변수 를 메소드 파라미터에 바인딩한다.@UploadedFile : 업로드된 파일 을 메소드 파라미터에 바인딩한다.@UploadedFiles : 여러 업로드된 파일들 을 메소드 파라미터에 바인딩한다.@Inject : 의존성을 주입(DI)하여 필요한 객체를 인스턴스화한다.@UseGuards : 가드(Guards) 를 설정하여 요청을 보호한다.@UseInterceptors : 인터셉터(Interceptors) 를 설정하여 요청과 응답을 변환하거나 로깅한다.@UsePipes : 파이프(Pipes) 를 설정하여 데이터 변환 및 유효성 검사를 수행한다.@UseFilters : 예외 필터(Exception Filters) 를 설정하여 예외처리를 수행한다.