.NET library for adding FluentValidation validators to a MediatR request pipeline
$ dotnet add package Centeva.RequestValidationCenteva.RequestAuthorization is a .NET library that provides a method for validating MediatR requests using FluentValidation. This enables validation at the request level instead of inside ASP.Net Core controllers, separating validation logic from the presentation layer.
Import the Centeva.RequestValidation package to your projects where needed.
Register the validators and add a MediatR pipeline behavior in your Program.cs:
builder.Services.AddRequestValidation(typeof(SampleValidator).Assembly);
NOTE: If you're also using Centeva.RequestAuthorization, you likely want
to call the above method first, then add the Authorization behavior. This
ensures that validation happens first in your MediatR pipeline.
To validate a request, add a validator class to your project that inherits from
AbstractValidator<TRequest>, where TRequest is the type of request you want
to validate. For example:
public class SampleValidator : AbstractValidator<SampleRequest>
{
public SampleValidator()
{
RuleFor(x => x.Name).NotEmpty();
}
}
If validation fails, a ValidationException will be thrown. Your application
is responsible for handling those exceptions, possibly by mapping to a custom
HTTP response or a ProblemDetails object.
Result TypesIf your request handler returns a Result or Result<T> type (from the
Ardalis.Result library), then validation
failures will be returned as an invalid Result containing the validation
errors instead of a thrown exception.
This allows you to handle validation errors in a more functional style, without
relying on exceptions for control flow.
var result = await _mediator.Send(new SampleRequest());
if (!result.IsInvalid)
{
// Do something here with result.ValidationErrors
}
// Respond normally herePlease use a Pull Request to suggest changes to this library. As this is a shared library, strict semantic versioning rules should be followed to avoid unexpected breaking changes.
From Windows, use the dotnet test command, or your Visual Studio Test
Explorer.
This library is versioned by GitVersion. Create a Git tag for an official release (e.g., "v1.0.0"). Version numbers can be incremented via commit message using the GitVersion approaches.