Validation
Validation
유효성 검사는 모든 웹 응용 프로그램에 필수적인 기능입니다. 들어오는 요청을 자동으로 확인하기 위해 내장된 ValidationPipe
가 사용하는 class-validator 패키지를 활용합니다. ValidationPipe
는 다양한 강력한 유효성 검사 규칙을 사용하여 들어오는 클라이언트 페이로드를 확인하는 편리한 방법을 제공합니다.
Overview
파이프 장에서 우리는 단순화된 검증 파이프를 만드는 과정을 거쳤습니다. 우리가 수행하는 작업을 더 잘 이해하려면 이 기사를 읽는 것이 좋습니다. 여기서는 주로 실제 사용 사례에 중점을 둘 것입니다.
Auto-validation
이 자습서를 위해 ValidationPipe
를 전체 응용 프로그램에 바인딩하므로 모든 엔드포인트가 잘못된 데이터로부터 자동으로 보호됩니다.
파이프를 테스트하기 위해 기본 엔드포인트를 만들어 봅시다.
그런 다음 CreateUserDto에 몇 가지 유효성 검사 규칙을 추가하십시오.
이제 누군가가 유효하지 않은 email
로 엔드 포인트를 요청하면 애플리케이션은 400 Bad Request
코드와 다음 응답 본문으로 응답합니다.
분명히 응답 본문은 ValidationPipe
의 유일한 사용 사례가 아닙니다. 엔드 포인트 경로에서 :id
를 받고 싶다고 상상해 보십시오. 그래도 숫자만 유효합니다. 이것은 매우 간단합니다.
그리고 FindOneParams
는 다음과 같습니다.
Disable detailed errors
오류 메시지는 네트워크를 통해 전송된 데이터의 문제점을 이해하는 데 많은 도움이 됩니다. 그러나 일부 프로덕션 환경에서는 자세한 오류를 사용하지 않을 수 있습니다.
이제 최종 사용자에게 오류 메시지가 채워지지 않습니다.
Stripping properties
종종 미리 정의 된 (허용 된) 속성만 전달하고 싶습니다. 예를 들어, 우리가 email
과 password
속성을 기대한다면 누군가가 age
를 보낼 때 이 속성은 제거되어 DTO에서 사용할 수 없게 됩니다. 이러한 동작을 가능하게하려면whitelist
를 true
로 설정하십시오.
이 설정은 화이트리스트에 포함되지 않은 (데코레이터없이) 속성의 자동 제거를 활성화합니다. 그러나 요청 처리를 완전히 중지하고 사용자에게 오류 응답을 반환하려면 whitelist
와 함께 forbidNonWhitelisted
를 사용하십시오.
Auto payload transforming
ValidationPipe
는 페이로드를 해당 DTO 클래스로 자동 변환하지 않습니다. 컨트롤러 메소드에서 createUserDto
또는 findOneParams
를 살펴보면 실제 클래스가 아니라는 것을 알 수 있습니다. 자동 변환을 활성화하려면transform
을true
로 설정하십시오.
Websockets & Microservices
이러한 모든 지침은 사용중인 전송 방법에 관계없이 WebSocket과 마이크로 서비스를 모두 고려했습니다.
Learn more
사용자 지정 유효성 검사기, 오류 메시지 및 사용 가능한 데코레이터에 대한 자세한 내용을 보려면 이 페이지를 방문하십시오.
Last updated