이전 포스팅에 class-validator 데코레이터를 사용하여 유효성 검사를
학습하고 사이드 프로젝트 만들었는데.. 사이드 프로젝트 만드는 과정중
사용하게 된 유효성 검사 4가지 데코레이터에 대해 포스팅 할려고 합니다.
@IsCreditCard() 데코레이터는 문자열이 유효한 신용카드 번호 형식인지 확인합니다.
Luhn 알고리즘을 사용하여 카드 번호의 형식을 검사합니다.
import { IsCreditCard, IsNotEmpty } from 'class-validator';
export class PaymentDto {
@IsNotEmpty()
@IsCreditCard() // 유효한 신용카드 번호인지 확인
cardNumber: string;
}
// 예시 데이터:
{
"cardNumber": "4111111111111111" // 유효한 카드 번호 형식
}
// 예시 데이터 (에러):
{
"cardNumber": "1234567890123456" // 유효하지 않은 카드 번호 형식
}
@IsHexColor()는 문자열이 6자리 또는 3자리 16진수로 표현된 유효한 색상 코드인지 확인합니다.
HTML/CSS에서 사용되는 색상 코드 형식을 검증할 때 유용합니다.
import { IsHexColor, IsNotEmpty } from 'class-validator';
export class ColorDto {
@IsNotEmpty()
@IsHexColor() // 유효한 16진수 색상 코드인지 확인
backgroundColor: string;
}
// 예시 데이터:
{
"backgroundColor": "#ff5733" // 유효한 6자리 16진수 색상
}
// 예시 데이터 (에러):
{
"backgroundColor": "blue" // 유효하지 않은 색상 형식
}
@IsUUID() 데코레이터는 문자열이 유효한 UUID(범용 고유 식별자)인지 확인합니다.
주로 데이터베이스에서 고유 식별자로 사용되며, 다양한 버전의 UUID를 지원합니다.
import { IsUUID, IsNotEmpty } from 'class-validator';
export class UserDto {
@IsNotEmpty()
@IsUUID() // 유효한 UUID인지 확인
userId: string;
}
// 예시 데이터:
{
"userId": "123e4567-e89b-12d3-a456-426614174000" // 유효한 UUID v4
}
// 예시 데이터 (에러):
{
"userId": "invalid-uuid-string" // 유효하지 않은 UUID
}
@IsLatLong() 데코레이터는 문자열이 유효한 위도(latitude)와 경도(longitude) 값인지 확인합니다.
위도와 경도는 각각 -90에서 90, -180에서 180 사이의 실수로 표현됩니다.
import { IsLatLong, IsNotEmpty } from 'class-validator';
export class LocationDto {
@IsNotEmpty()
@IsLatLong() // 유효한 위도와 경도 값인지 확인
coordinates: string;
}
// 예시 데이터:
{
"coordinates": "37.7749,-122.4194" // 유효한 위도, 경도 값 (샌프란시스코)
}
// 예시 데이터 (에러):
{
"coordinates": "200,200" // 유효하지 않은 위도와 경도 값
}
이 네 가지 데코레이터는 각기 다른 검증 용도로 사용되며,
NestJS에서 데이터 유효성 검사를 간편하게 구현하는 데 큰 도움이 되었습니다.