Nest4 - 데코레이터(Decorator)
NestJs 데코레이터
NestJS는 클래스, 메서드, 속성 등에 메타데이터를 추가하거나 기능을 주입하는데 사용할 수 있도록 데코레이터를 제공한다. 스프링의 Annotation과 동일한 역할을 한다고 보면 된다.
주요 데코레이터
여러가지 데코레이터를 제공하지만 그 중에서도 기본적으로 or 필수적으로 사용되는 데코레이터는 아래와 같다.
@Module
@Module
데코레이터는 NestJS 애플리케이션의 모듈을 정의하며, 모듈의 구조 및 기능 별로 클래스를 그룹화한다.
1
2
3
4
5
@Module({
controllers: [UserController],
providers: [UserService],
})
export class UserModule {}
@Controller
@Controller
데코레이터는 HTTP 요청을 처리하는 컨트롤러 클래스를 정의한다.
1
2
3
4
@Controller('users')
export class UserController {
// ...
}
@Injectable
@Injectable
데코레이터는 의존성 주입 가능한 클래스를 정의한다.
1
2
3
4
@Injectable()
export class UserService {
// ...
}
@Get
, @Post
, @Put
, @Delete
, @Patch
컨트롤러 메서드에 사용되며, HTTP 요청 핸들러를 통해 각각 GET, POST, PUT, DELETE HTTP 메서드에 매핑시키는 역할을 한다.
1
2
3
4
5
6
7
@Controller('users')
export class UserController {
@Get()
findAll(): string {
return 'This action returns all users';
}
}
@Param
, @Query
, @Body
HTTP의 다양한 데이터 구조를 추출하기 위해 사용되는 데코레이터이다.
@Param
데코레이터는 경로 매개변수(parameter)를 추출하는데 사용된다. 경로 매개변수는 URL 경로에 포함된 변수들을 의미한다.
1
2
3
4
@Get(':id')
findOne(@Param('id') id: string) {
// ...
}
@Query
데코레이터는 쿼리 매개변수를 추출하는데 사용된다. 쿼리 매개변수는 URL의 ?
뒤에 오는 변수들을 의미한다.
1
2
3
4
@Get('search')
search(@Query('name') name: string) {
// ...
}
@Body
데코레이터는 요청의 본문(body)에서 데이터를 추출하는데 사용된다. 주로 POST, PUT, PATCH 메서드에서 사용된다.
1
2
3
4
@Post()
create(@Body() createUserDto: CreateUserDto) {
// ...
}
This post is licensed under CC BY 4.0 by the author.