0Pricing
C# Academy · 강의

FluentValidation 규칙

유창한 구문으로 표현력 있는 유효성 검사기를 작성합니다.

FluentValidation 규칙은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

FluentValidation을 사용하는 이유

FluentValidation은 유효성 검사 규칙을 모델에서 분리하여 전용 유효성 검사기 클래스에 배치하는 인기 있는 .NET 라이브러리입니다. 규칙은 읽기 쉽고 연결해서 사용할 수 있는 fluent API로 표현되므로 모델을 깔끔하게 유지하고 규칙을 테스트할 수 있습니다.

dotnet add package FluentValidation
dotnet add package FluentValidation.DependencyInjectionExtensions

AbstractValidator 기본 클래스

AbstractValidator<T>를 상속하여 유효성 검사기를 작성합니다. 여기서 T는 검증할 모델입니다. 규칙은 생성자에서 정의합니다.

using FluentValidation;

public class CustomerValidator : AbstractValidator<Customer>
{
    public CustomerValidator()
    {
        // rules go here
    }
}

RuleFor로 첫 번째 규칙 정의하기

RuleFor는 람다를 통해 속성을 선택한 다음, 해당 속성에 유효성 검사기를 연결합니다. NotEmpty()는 null, 빈 문자열 및 기본값을 거부합니다.

public class CustomerValidator : AbstractValidator<Customer>
{
    public CustomerValidator()
    {
        RuleFor(c => c.Name).NotEmpty();
    }
}

여러 유효성 검사기 연결하기

각 RuleFor에는 여러 유효성 검사기를 연결할 수 있습니다. 유효성 검사기는 순서대로 실행되며 모두 통과해야 합니다. 문장처럼 자연스럽게 읽힙니다.

RuleFor(c => c.Name)
    .NotEmpty()
    .MinimumLength(2)
    .MaximumLength(50);

기본 제공 유효성 검사기

FluentValidation에는 다양한 유효성 검사기가 기본 제공됩니다. NotNull, NotEmpty, EmailAddress, Length, InclusiveBetween, GreaterThan, Matches(정규식) 등이 있습니다.

RuleFor(c => c.Email).NotEmpty().EmailAddress();
RuleFor(c => c.Age).InclusiveBetween(18, 120);
RuleFor(c => c.Phone).Matches(@"^\+?[0-9]{7,15}$");

사용자 지정 오류 메시지

WithMessage를 사용하여 기본 메시지를 재정의합니다. {PropertyName} 및 {PropertyValue}와 같은 자리 표시자를 삽입할 수 있습니다.

RuleFor(c => c.Email)
    .NotEmpty().WithMessage("Email is required.")
    .EmailAddress().WithMessage("{PropertyValue} is not a valid email.");

사용자 지정 오류 코드 및 심각도

메시지 외에도 기계가 읽을 수 있는 WithErrorCode와 WithSeverity(오류, 경고, 정보)를 지정하여 클라이언트가 상황에 따라 다르게 대응하도록 할 수 있습니다.

RuleFor(c => c.Name)
    .NotEmpty()
    .WithErrorCode("NAME_REQUIRED")
    .WithSeverity(Severity.Error);

중첩 객체 검증하기

SetValidator를 사용하여 하위 객체에 유효성 검사기를 재사용하면 규칙을 모듈화할 수 있습니다.

public class OrderValidator : AbstractValidator<Order>
{
    public OrderValidator()
    {
        RuleFor(o => o.Customer).SetValidator(new CustomerValidator());
    }
}

컬렉션 검증하기

RuleForEach는 컬렉션의 모든 항목에 규칙을 적용합니다.

public class OrderValidator : AbstractValidator<Order>
{
    public OrderValidator()
    {
        RuleForEach(o => o.Items)
            .ChildRules(item => item.RuleFor(i => i.Quantity).GreaterThan(0));
    }
}

유효성 검사기 수동으로 실행하기

validator를 직접 호출하고 결과를 확인할 수 있습니다. ValidationResult는 IsValid와 Errors 목록을 제공합니다.

var validator = new CustomerValidator();
ValidationResult result = validator.Validate(customer);

if (!result.IsValid)
{
    foreach (var error in result.Errors)
    {
        Console.WriteLine(error.PropertyName + ": " + error.ErrorMessage);
    }
}

비동기 유효성 검사

규칙에 I/O가 필요한 경우(예: 데이터베이스 확인) ValidateAsync와 MustAsync 같은 비동기 유효성 검사기를 사용합니다. 사용자 지정 규칙 단원에서 자세히 살펴봅니다.

ValidationResult result = await validator.ValidateAsync(customer);

빠른 확인

FluentValidation의 기초를 확인합니다.

정리

FluentValidation은 AbstractValidator<T> 클래스에 규칙을 배치합니다. RuleFor로 속성을 지정한 다음 NotEmpty, EmailAddress, InclusiveBetween과 같은 기본 제공 유효성 검사기를 연결합니다. WithMessage, WithErrorCode, WithSeverity로 피드백을 사용자 지정하고, SetValidator와 RuleForEach로 로직을 재사용하며, Validate/ValidateAsync로 규칙을 실행합니다.

자주 묻는 질문

“FluentValidation 규칙” 강의는 무료인가요?

네 — “FluentValidation 규칙” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“FluentValidation 규칙”에서 뭘 배우나요?

유창한 구문으로 표현력 있는 유효성 검사기를 작성합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“FluentValidation 규칙” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 데이터 주석 유효성 검사
  2. FluentValidation 규칙
  3. 사용자 지정 및 조건부 규칙
  4. API에 유효성 검사 통합
← C# Academy(으)로 돌아가기