Building a Flexible Validation System with FluentValidation in NET APIs

Featured Image
FluentValidation is a powerful library for input validation in .NET APIs, offering a fluent interface and lambda expressions to define strongly-typed validation rules. It supports dependency injection (DI), enabling dynamic rule configurations based on injected services or settings.

You Should Know:

1. Installing FluentValidation

dotnet add package FluentValidation 

2. Creating a Validator Class

using FluentValidation;

public class UserValidator : AbstractValidator<User> 
{ 
public UserValidator() 
{ 
RuleFor(user => user.Name).NotEmpty().WithMessage("Name is required."); 
RuleFor(user => user.Email).EmailAddress().WithMessage("Invalid email format."); 
} 
} 

3. Integrating with ASP.NET Core

Register the validator in `Program.cs`:

builder.Services.AddScoped<IValidator<User>, UserValidator>(); 

4. Using Dependency Injection in Validation

public class ProductValidator : AbstractValidator<Product> 
{ 
public ProductValidator(IConfiguration config) 
{ 
int minStock = config.GetValue<int>("MinStock"); 
RuleFor(p => p.Stock).GreaterThanOrEqualTo(minStock); 
} 
} 

5. Custom Validators

RuleFor(user => user.Password) 
.Must(p => p.Length >= 8) 
.WithMessage("Password must be at least 8 characters."); 

6. Testing Validation in Postman

  • Send a malformed request to verify validation responses.
  • Check HTTP `400 Bad Request` responses for validation errors.

7. Advanced: RuleSets for Conditional Validation

RuleSet("Admin", () => 
{ 
RuleFor(user => user.Role).Equal("Admin"); 
}); 

8. Automating Validation in Minimal APIs

app.MapPost("/users", (User user, IValidator<User> validator) => 
{ 
var result = validator.Validate(user); 
if (!result.IsValid) return Results.BadRequest(result.Errors); 
return Results.Ok(); 
}); 

What Undercode Say:

FluentValidation simplifies API input validation while maintaining flexibility. Key takeaways:
– Use DI for dynamic rule configurations.
– Leverage `RuleFor` and `Must` for custom logic.
– Test validation rules rigorously.
– Combine with ASP.NET Core’s middleware for seamless integration.

For more details, check the official FluentValidation docs.

Expected Output:

A robust API with structured validation, reducing runtime errors and improving security.

Prediction:

Future .NET releases may further integrate FluentValidation with source generators for compile-time validation optimizations.

References:

Reported By: Milan Jovanovic – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅

Join Our Cyber World:

💬 Whatsapp | 💬 Telegram