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.DependencyInjectionExtensionsAbstractValidator 기본 클래스
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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 데이터 주석 유효성 검사
- FluentValidation 규칙
- 사용자 지정 및 조건부 규칙
- API에 유효성 검사 통합