validators

This commit is contained in:
2026-05-28 21:53:46 +02:00
parent 2f7f996faf
commit 76b5c0b49d
12 changed files with 172 additions and 3 deletions
+28
View File
@@ -0,0 +1,28 @@
using FluentValidation;
namespace WebApi.Filters;
public sealed class ValidationFilter : IEndpointFilter
{
public async ValueTask<object?> InvokeAsync(EndpointFilterInvocationContext context, EndpointFilterDelegate next)
{
foreach (var argument in context.Arguments)
{
if (argument is null)
continue;
var validatorType = typeof(IValidator<>).MakeGenericType(argument.GetType());
if (context.HttpContext.RequestServices.GetService(validatorType) is not IValidator validator)
continue;
var validationContext = new ValidationContext<object>(argument);
var result = await validator.ValidateAsync(validationContext, context.HttpContext.RequestAborted);
if (!result.IsValid)
return Results.ValidationProblem(result.ToDictionary());
}
return await next(context);
}
}