[NestJS] Validation Decorators

검증 데코레이터

일반적인 검증 데코레이터


데코레이터 설명
@IsDefined(value: any) 값이 정의되어 있는지 확인합니다 (!== undefined, !== null). 이는 skipMissingProperties 옵션을 무시하는 유일한 데코레이터입니다.
@IsOptional() 주어진 값이 비어있는지 확인하고 (=== null, === undefined), 그럴 경우 해당 속성의 모든 검증자를 무시합니다.
@Equals(comparison: any) 값이 비교값과 같은지 ("===") 확인합니다.
@NotEquals(comparison: any) 값이 비교값과 같지 않은지 ("!==") 확인합니다.
@IsEmpty() 주어진 값이 비어있는지 확인합니다 (=== '', === null, == undefined).
@IsNotEmpty() 주어진 값이 비어있지 않은지 확인합니다 (!== '', !== null, !== undefined).
@IsIn(values: any[]) 값이 허용된 값들의 배열에 포함되어 있는지 확인합니다.
@IsNotIn(values: any[]) 값이 허용되지 않은 값들의 배열에 포함되어 있지 않은지 확인합니다.

타입 검증 데코레이터

데코레이터 설명
@IsBoolean() 값이 불린값인지 확인합니다.
@IsDate() 값이 날짜인지 확인합니다.
@IsString() 값이 문자열인지 확인합니다.
@IsNumber(options: IsNumberOptions) 값이 숫자인지 확인합니다.
@IsInt() 값이 정수인지 확인합니다.
@IsArray() 값이 배열인지 확인합니다.
@IsEnum(entity: object) 값이 유효한 열거형인지 확인합니다.

숫자 검증 데코레이터

데코레이터 설명
@IsDivisibleBy(num: number) 값이 다른 숫자로 나누어떨어지는 숫자인지 확인합니다.
@IsPositive() 값이 0보다 큰 양수인지 확인합니다.
@IsNegative() 값이 0보다 작은 음수인지 확인합니다.
@Min(min: number) 주어진 숫자가 지정된 숫자보다 크거나 같은지 확인합니다.
@Max(max: number) 주어진 숫자가 지정된 숫자보다 작거나 같은지 확인합니다.

날짜 검증 데코레이터

데코레이터 설명
@MinDate(date: Date | (() => Date)) 값이 지정된 날짜 이후의 날짜인지 확인합니다.
@MaxDate(date: Date | (() => Date)) 값이 지정된 날짜 이전의 날짜인지 확인합니다.

문자열 타입 검증 데코레이터

데코레이터 설명
@IsBooleanString() 문자열이 불린값인지 확인합니다 (예: "true" 또는 "false" 또는 "1", "0").
@IsDateString() @IsISO8601()의 별칭입니다.
@IsNumberString(options?: IsNumericOptions) 문자열이 숫자인지 확인합니다.

문자열 검증 데코레이터

데코레이터 설명
@Contains(seed: string) 문자열이 seed를 포함하는지 확인합니다.
@NotContains(seed: string) 문자열이 seed를 포함하지 않는지 확인합니다.
@IsAlpha() 문자열이 문자(a-zA-Z)만 포함하는지 확인합니다.
@IsAlphanumeric() 문자열이 문자와 숫자만 포함하는지 확인합니다.
@IsDecimal(options?: IsDecimalOptions) 문자열이 유효한 소수값인지 확인합니다. 기본 IsDecimalOptions는 force_decimal=False, decimal_digits: '1,', locale: 'en-US'입니다.
@IsAscii() 문자열이 ASCII 문자만 포함하는지 확인합니다.
@IsBase32() 문자열이 base32로 인코딩되었는지 확인합니다.
@IsBase58() 문자열이 base58로 인코딩되었는지 확인합니다.
@IsBase64(options?: IsBase64Options) 문자열이 base64로 인코딩되었는지 확인합니다.
@IsIBAN() 문자열이 IBAN(국제은행계좌번호)인지 확인합니다.
@IsBIC() 문자열이 BIC(은행식별코드) 또는 SWIFT 코드인지 확인합니다.
@IsByteLength(min: number, max?: number) 문자열의 길이(바이트)가 범위 내에 있는지 확인합니다.
@IsCreditCard() 문자열이 신용카드 번호인지 확인합니다.
@IsCurrency(options?: IsCurrencyOptions) 문자열이 유효한 통화 금액인지 확인합니다.
@IsISO4217CurrencyCode() 문자열이 ISO 4217 통화 코드인지 확인합니다.
@IsEthereumAddress() 문자열이 기본 정규식을 사용하여 이더리움 주소인지 확인합니다. 주소 체크섬은 검증하지 않습니다.
@IsBtcAddress() 문자열이 유효한 BTC 주소인지 확인합니다.
@IsDataURI() 문자열이 데이터 URI 형식인지 확인합니다.
@IsEmail(options?: IsEmailOptions) 문자열이 이메일인지 확인합니다.
@IsFQDN(options?: IsFQDNOptions) 문자열이 완전한 도메인 이름인지 확인합니다 (예: domain.com).
@IsFullWidth() 문자열이 전각 문자를 포함하는지 확인합니다.
@IsHalfWidth() 문자열이 반각 문자를 포함하는지 확인합니다.
@IsVariableWidth() 문자열이 전각과 반각 문자의 혼합을 포함하는지 확인합니다.
@IsHexColor() 문자열이 16진수 색상인지 확인합니다.
@IsHSL() 문자열이 CSS Colors Level 4 사양에 기반한 HSL 색상인지 확인합니다.
@IsRgbColor(options?: IsRgbOptions) 문자열이 rgb 또는 rgba 색상인지 확인합니다.
@IsIdentityCard(locale?: string) 문자열이 유효한 신분증 코드인지 확인합니다.
@IsPassportNumber(countryCode?: string) 문자열이 특정 국가 코드에 상대적으로 유효한 여권 번호인지 확인합니다.
@IsPostalCode(locale?: string) 문자열이 우편번호인지 확인합니다.
@IsHexadecimal() 문자열이 16진수인지 확인합니다.
@IsOctal() 문자열이 8진수인지 확인합니다.
@IsMACAddress(options?: IsMACAddressOptions) 문자열이 MAC 주소인지 확인합니다.
@IsIP(version?: "4"|"6") 문자열이 IP(버전 4 또는 6)인지 확인합니다.
@IsPort() 문자열이 유효한 포트 번호인지 확인합니다.
@IsISBN(version?: "10"|"13") 문자열이 ISBN(버전 10 또는 13)인지 확인합니다.
@IsEAN() 문자열이 EAN(유럽 상품 번호)인지 확인합니다.
@IsISIN() 문자열이 ISIN(주식/증권 식별자)인지 확인합니다.
@IsISO8601(options?: IsISO8601Options) 문자열이 유효한 ISO 8601 날짜 형식인지 확인합니다. 유효한 날짜에 대한 추가 검사를 위해 strict = true 옵션을 사용하세요.
@IsJSON() 문자열이 유효한 JSON인지 확인합니다.
@IsJWT() 문자열이 유효한 JWT인지 확인합니다.
@IsObject() 객체가 유효한 객체인지 확인합니다 (null, 함수, 배열은 false를 반환).
@IsNotEmptyObject() 객체가 비어있지 않은지 확인합니다.
@IsLowercase() 문자열이 소문자인지 확인합니다.
@IsLatLong() 문자열이 lat, long 형식의 유효한 위도-경도 좌표인지 확인합니다.
@IsLatitude() 문자열 또는 숫자가 유효한 위도 좌표인지 확인합니다.
@IsLongitude() 문자열 또는 숫자가 유효한 경도 좌표인지 확인합니다.
@IsMobilePhone(locale: string) 문자열이 휴대폰 번호인지 확인합니다.
@IsISO31661Alpha2() 문자열이 유효한 ISO 3166-1 alpha-2 공식 할당 국가 코드인지 확인합니다.
@IsISO31661Alpha3() 문자열이 유효한 ISO 3166-1 alpha-3 공식 할당 국가 코드인지 확인합니다.
@IsLocale() 문자열이 로케일인지 확인합니다.
@IsPhoneNumber(region: string) libphonenumber-js를 사용하여 문자열이 유효한 전화번호인지 확인합니다.
@IsMongoId() 문자열이 MongoDB ObjectId의 유효한 16진 인코딩 표현인지 확인합니다.
@IsMultibyte() 문자열이 하나 이상의 멀티바이트 문자를 포함하는지 확인합니다.
@IsNumberString(options?: IsNumericOptions) 문자열이 숫자인지 확인합니다.
@IsSurrogatePair() 문자열이 서로게이트 쌍 문자를 포함하는지 확인합니다.
@IsTaxId() 문자열이 유효한 세금 ID인지 확인합니다. 기본 로케일은 en-US입니다.
@IsUrl(options?: IsURLOptions) 문자열이 URL인지 확인합니다.
@IsMagnetURI() 문자열이 마그넷 URI 형식인지 확인합니다.
@IsUUID(version?: UUIDVersion) 문자열이 UUID(버전 3, 4, 5 또는 전체)인지 확인합니다.
@IsFirebasePushId() 문자열이 Firebase Push ID인지 확인합니다.
@IsUppercase() 문자열이 대문자인지 확인합니다.
@Length(min: number, max?: number) 문자열의 길이가 범위 내에 있는지 확인합니다.
@MinLength(min: number) 문자열의 길이가 주어진 숫자보다 작지 않은지 확인합니다.
@MaxLength(max: number) 문자열의 길이가 주어진 숫자보다 크지 않은지 확인합니다.
@Matches(pattern: RegExp, modifiers?: string) 문자열이 패턴과 일치하는지 확인합니다. matches('foo', /foo/i) 또는 matches('foo', 'foo', 'i') 형식으로 사용합니다.
@IsMilitaryTime() 문자열이 HH:MM 형식의 유효한 군용 시간 표현인지 확인합니다.
@IsTimeZone() 문자열이 유효한 IANA 시간대를 나타내는지 확인합니다.
@IsHash(algorithm: string) 문자열이 해시인지 확인합니다. 지원되는 타입: md4, md5, sha1, sha256, sha384, sha512, ripemd128, ripemd160, tiger128, tiger160, tiger192, crc32, crc32b.
@IsMimeType() 문자열이 유효한 MIME 타입 형식과 일치하는지 확인합니다.
@IsSemVer() 문자열이 시맨틱 버전 지정 사양(SemVer)인지 확인합니다.
@IsISSN(options?: IsISSNOptions) 문자열이 ISSN인지 확인합니다.
@IsISRC() 문자열이 ISRC인지 확인합니다.
@IsRFC3339() 문자열이 유효한 RFC 3339 날짜인지 확인합니다.
@IsStrongPassword(options?: IsStrongPasswordOptions) 문자열이 강력한 비밀번호인지 확인합니다.

배열 검증 데코레이터

데코레이터 설명
@ArrayContains(values: any[]) 배열이 주어진 값 배열의 모든 값을 포함하는지 확인합니다.
@ArrayNotContains(values: any[]) 배열이 주어진 값들 중 어느 것도 포함하지 않는지 확인합니다.
@ArrayNotEmpty() 주어진 배열이 비어있지 않은지 확인합니다.
@ArrayMinSize(min: number) 배열의 길이가 지정된 숫자보다 크거나 같은지 확인합니다.
@ArrayMaxSize(max: number) 배열의 길이가 지정된 숫자보다 작거나 같은지 확인합니다.
@ArrayUnique(identifier?: (o) => any) 배열의 모든 값이 고유한지 확인합니다. 객체의 비교는 참조 기반입니다. 비교에 사용될 반환값을 가진 선택적 함수를 지정할 수 있습니다.

객체 검증 데코레이터

데코레이터 설명
@IsInstance(value: any) 속성이 전달된 값의 인스턴스인지 확인합니다.

기타 데코레이터

데코레이터 설명
@Allow() 다른 제약 조건이 지정되지 않을 때 속성이 제거되는 것을 방지합니다.