https://docs.nestjs.com/pipes
Pipes
-
Pipe 는 @Injectable()
데코레이터가 달린 클레스 이다.
-
Pipe 는 PipeTransform
interface 를 implement 해야 한다.
-
Pipe 는 두 가지 일반적인 사용 사례가 있습니다.
Transformation : 원하는 폼으로 인풋데이터를 바꾸는 것 (예를들어, string to integer)
Validation : 인풋 데이터를 검사하여 valid 하지 않은 경우 throw an exception, 아닐 경우 단순히 통과
- 두 경우 모두, 파이프는 컨트롤러 라우트 핸들러에 의해 처리되는 중인 arguments 위에서 작동합니다.
- 네스트는 (컨트롤러 라우트 핸들러) 메소드가 호출되기 전 파이프를 개입시킵니다. 그리고 파이프는 메소드로 향하는 아규먼트를 받아서 동작합니다.
- 모든 Transformation 이나 Validation 은 이 시점에 동작합니다.
- 그 후에 라우트 핸들러가 (잠재적으로) 변환된 아규먼트를 받아 호출됩니다.
- 네스트는 기본적으로 여러 빌트인 파이프를 지원합니다. 너는 개꿀로 사용할수 있습니다.
- 너는 너의 커스텀 파이프를 만들 수도 있습니다.
- 이 쳅터에서, 여기서는 빌트인 파이프를 소개하고, 어떻게 라우트핸들러에 바인드하는지 알아보겠습니다.
- 그런 후에 커스텀 파이프를 사용하는 방법을 보겠습니다.
HINT Pipe 들은 exceptions zone 에서 동작합니다. 이 뜻은, 파이프가 에러를 던지면 이것은 exception layer (글로벌 익셉션 필터, 그리고 현재 컨텍스트에 적용된 모든 인셉션 필터들) 에서 핸들링 된다는 것입니다. 위에서 말했다 시피, 파이프에서 발생된 예외는 명료합니다. 따라서 어떠한 컨트롤러 메소드도 그 후에 실행되지 않습니다. 이것은 개꿀입니다.