¿Qué es FluentValidation y para qué sirve?
\n\nFluentValidation es una biblioteca popular para .NET, diseñada para construir reglas de validación de objetos de negocio estrictas y legibles. A diferencia de los atributos de validación integrados (Data Annotations), FluentValidation ofrece un enfoque basado en la separación de la lógica de validación y el modelo de datos. Esto hace que el código sea más limpio, comprobable y flexible.
\n\nLa biblioteca utiliza una "interfaz fluida" (Fluent Interface), que permite construir cadenas de reglas de validación mediante notación de puntos. FluentValidation admite escenarios complejos: validaciones en cascada, reglas condicionales, validadores personalizados, trabajo con listas y objetos anidados.
\n\n¿Para qué sirve FluentValidation?
\n- \n
- Separación de responsabilidades: Las reglas de validación no contaminan el modelo de datos. \n
- Legibilidad: Las cadenas de reglas son fáciles de leer y mantener. \n
- Flexibilidad: Es fácil crear reglas complejas, condicionales y compuestas. \n
- Capacidad de prueba: Los validadores se pueden probar como clases normales. \n
- Integración: Se integra perfectamente con ASP.NET Core, MVC, Web API y otros frameworks. \n
Instalación de FluentValidation
\n\nLa instalación de la biblioteca se realiza a través del administrador de paquetes NuGet. Ejecute uno de los siguientes comandos en la consola del administrador de paquetes o en la terminal de .NET CLI:
\n\n// Instalación a través de Package Manager Console\nInstall-Package FluentValidation\n\n// Instalación a través de .NET CLI\ndotnet add package FluentValidation\n\nPara la integración con ASP.NET Core, también se requiere el paquete:
\n\ndotnet add package FluentValidation.AspNetCore\n\nInicio rápido: ejemplo de código
\n\nSupongamos que tenemos un modelo de usuario:
\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\nCreemos un validador, heredando de AbstractValidator<User>:
using FluentValidation;\n\npublic class UserValidator : AbstractValidator<User>\n{\n public UserValidator()\n {\n RuleFor(user => user.Name)\n .NotEmpty().WithMessage("El nombre es obligatorio")\n .Length(2, 50).WithMessage("El nombre debe tener entre 2 y 50 caracteres");\n\n RuleFor(user => user.Email)\n .NotEmpty().WithMessage("El email es obligatorio")\n .EmailAddress().WithMessage("Formato de email no válido");\n\n RuleFor(user => user.Age)\n .InclusiveBetween(18, 120).WithMessage("La edad debe estar entre 18 y 120 años");\n\n RuleFor(user => user.Password)\n .NotEmpty().WithMessage("La contraseña es obligatoria")\n .MinimumLength(6).WithMessage("La contraseña debe tener al menos 6 caracteres");\n\n RuleFor(user => user.ConfirmPassword)\n .Equal(user => user.Password).WithMessage("Las contraseñas no coinciden");\n }\n}\n\nUso del validador:
\n\nvar validator = new UserValidator();\nvar user = new User\n{\n Name = "A",\n Email = "invalid-email",\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($"Propiedad: {error.PropertyName}, Error: {error.ErrorMessage}");\n }\n}\n\nMétodos principales de FluentValidation
\n\nA continuación se presentan los métodos clave de la biblioteca con descripción detallada y ejemplos.
\n\n1. RuleFor()
\nQué hace: Define una regla de validación para una propiedad específica del objeto. Este es el método principal con el que se comienza
También en la biblioteca
Limitación de tasa en C++: bibliotecas y herramientas para control de solicitudes