🛠️NestJS의 lifecycle
요청이 왔을 때 NestJS에서의 lifecycle을 보면 다음과 같다.
1. Requset
2. Middleware
2.1. Globally bound middleware
2.2. Module bound middleware
3.Guards
4. Interceptor(컨트롤러 앞단)
4.1. Golbal interceptor
4.2 Controller interceptor
4.3 Route interceptor
5. Pipes 📌 오늘 공부할 내용
7. Service(존재한다면)
8. Interceptor(컨트롤러 뒷단)
8.1. Route interceptor
8.2 Controller interceptor
8.3 Global interceptor
9. Exception
9.1. Route
9.2. Controller
9.3. Global
10. Server response
🛠️파이프
클라이언트 요청에서 들어오는 데이터를 유효성검사 및 변환을 수행하여 서버가 원하는 데이터를 얻을 수 있도록 도와주는 클래스
🛠️파이프 패턴
데이터로 받으면 각 파이프마다 아웃풋을 넘기고 넘김
🛠️사용 예시
@Get(':id')
getOneCat(@Param('id', ParseIntPipe) param: number) {
console.log(param);
console.log(typeof param);
}
이런식으로 처리하면 param이 기본 String이 아닌 number 형태로 변환 + 밸리데이션 체크도 가능
parseUUIDPipe 등등 여러가지 pipe가 있다~!~
위 사진 예시처럼 여러 파이프를 연결해서 쓰고싶다???
먼저 number 형태로 받은 파람을 양수형태로만 반환하는 파이프를 추가해보자
@Injactable()
exprot class PositiveIntPipe implements PipeTransform {
transform(value: number){
if(value < 0) {
throw new HttpException('value < 0', 400);
}
return value; //=> transrform 함수의 결괏값이 파이프의 결괏값
}
}
파이프 추가
@Get(':id')
getOneCat(@Param('id', ParseIntPipe, PositiveIntPipe) param: number) {
console.log(param);
console.log(typeof param);
}
참고
https://docs.microsoft.com/en-us/azure/architecture/patterns/pipes-and-filters
'NestJS' 카테고리의 다른 글
[NestJS] Exception (0) | 2024.11.28 |
---|---|
[NestJS] Middleware (0) | 2024.11.21 |
[NestJS] Provider, Module (0) | 2024.11.20 |
[NestJS] Controller (0) | 2024.11.20 |
[Express] 라우터 분리, 모듈화 (0) | 2024.11.14 |