O que é FluentValidation e para que serve?
\n\nFluentValidation é uma biblioteca popular para .NET, projetada para construir regras de validação de objetos de negócio rigorosas e legíveis. Ao contrário dos atributos de validação internos (Data Annotations), o FluentValidation oferece uma abordagem baseada na separação da lógica de validação e do modelo de dados. Isso torna o código mais limpo, testável e flexível.
\n\nA biblioteca utiliza uma "interface fluente" (Fluent Interface), que permite construir cadeias de regras de validação usando notação por pontos. O FluentValidation suporta cenários complexos: validações em cascata, regras condicionais, validadores personalizados, trabalho com listas e objetos aninhados.
\n\nPara que serve o FluentValidation?
\n- \n
- Separação de responsabilidades: As regras de validação não poluem o modelo de dados. \n
- Legibilidade: As cadeias de regras são fáceis de ler e manter. \n
- Flexibilidade: Fácil criar regras complexas, condicionais e compostas. \n
- Testabilidade: Os validadores podem ser testados como classes comuns. \n
- Integração: Integra-se perfeitamente com ASP.NET Core, MVC, Web API e outros frameworks. \n
Instalação do FluentValidation
\n\nA instalação da biblioteca é feita através do gerenciador de pacotes NuGet. Execute um dos seguintes comandos no console do gerenciador de pacotes ou no terminal .NET CLI:
\n\n// Instalação via Package Manager Console\nInstall-Package FluentValidation\n\n// Instalação via .NET CLI\ndotnet add package FluentValidation\n\nPara integração com ASP.NET Core, será necessário também o pacote:
\n\ndotnet add package FluentValidation.AspNetCore\n\nInício rápido: exemplo de código
\n\nSuponha que temos um modelo de usuário:
\n\npublic class User\n{\n public int Id { get; set; }\n public string Name { get; set; }\n public string Email { get; set; }\n public int Age { get; set; }\n public string Password { get; set; }\n public string ConfirmPassword { get; set; }\n}\n\nVamos criar um validador, herdando de AbstractValidator<User>:
using FluentValidation;\n\npublic class UserValidator : AbstractValidator<User>\n{\n public UserValidator()\n {\n RuleFor(user => user.Name)\n .NotEmpty().WithMessage("O nome é obrigatório")\n .Length(2, 50).WithMessage("O nome deve ter entre 2 e 50 caracteres");\n\n RuleFor(user => user.Email)\n .NotEmpty().WithMessage("O email é obrigatório")\n .EmailAddress().WithMessage("Formato de email inválido");\n\n RuleFor(user => user.Age)\n .InclusiveBetween(18, 120).WithMessage("A idade deve estar entre 18 e 120 anos");\n\n RuleFor(user => user.Password)\n .NotEmpty().WithMessage("A senha é obrigatória")\n .MinimumLength(6).WithMessage("A senha deve ter no mínimo 6 caracteres");\n\n RuleFor(user => user.ConfirmPassword)\n .Equal(user => user.Password).WithMessage("As senhas não coincidem");\n }\n}\n\nUso do validador:
\n\nvar validator = new UserValidator();\nvar user = new User\n{\n Name = "A",\n Email = "email-invalido",\n Age = 15,\n Password = "123",\n ConfirmPassword = "456"\n};\n\nvar result = validator.Validate(user);\n\nif (!result.IsValid)\n{\n foreach (var error in result.Errors)\n {\n Console.WriteLine($"Propriedade: {error.PropertyName}, Erro: {error.ErrorMessage}");\n }\n}\n\nPrincipais métodos do FluentValidation
\n\nAbaixo estão os principais métodos da biblioteca com descrição detalhada e exemplos.
\n\n1. RuleFor()
\nO que faz: Define uma regra de validação para uma propriedade específica do objeto. Este é o método principal a partir do qual se inicia
Também na biblioteca
RxJava para Java: guia completo com exemplos práticos
Configuração de aplicações TypeScript: bibliotecas e ferramentas
Configuração de aplicações PHP: bibliotecas e abordagens
Processamento de Markdown em Node.js: bibliotecas marked, showdown e remarkable
Envio de email em TypeScript: bibliotecas e exemplos de código