C# Academy · Les

Validatie integreren met API's

Retourneer duidelijke antwoorden met validatiefouten.

Les 4 van 413 stappen

Validatie integreren met API's is een gratis C# Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C# Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C# Academy bevat in totaal 4 lessen.

FluentValidation integreren in ASP.NET Core

Registreer je validators via afhankelijkheidsinjectie om verzoeken automatisch te valideren. De helper AddValidatorsFromAssembly doorzoekt een assembly en registreert elke validator die hij vindt.

using FluentValidation;

builder.Services
    .AddValidatorsFromAssemblyContaining<CustomerValidator>();

Automatische validatiemiddleware

Moderne FluentValidation geeft de voorkeur aan expliciete validatie, maar je kunt automatische validatie inschakelen. Die haakt aan op modelbinding, zodat ongeldige verzoeken worden afgewezen voordat je actie wordt uitgevoerd.

dotnet add package FluentValidation.AspNetCore

builder.Services.AddFluentValidationAutoValidation();

Validators ophalen via afhankelijkheidsinjectie

Omdat validators via afhankelijkheidsinjectie zijn geregistreerd, kunnen ze services zoals repositories injecteren. Daardoor werken asynchrone regels die een database gebruiken probleemloos in je API.

public class UserValidator : AbstractValidator<UserRequest>
{
    public UserValidator(IUserRepository repo)
    {
        RuleFor(u => u.Email)
            .MustAsync(async (e, ct) => !await repo.ExistsAsync(e));
    }
}

Expliciete validatie in een endpoint

Veel teams geven vanwege de duidelijkheid de voorkeur aan expliciete validatie. Injecteer IValidator<T> en roep deze bovenaan de handler aan.

app.MapPost("/users", async (
    UserRequest request,
    IValidator<UserRequest> validator) =>
{
    var result = await validator.ValidateAsync(request);
    if (!result.IsValid)
        return Results.ValidationProblem(result.ToDictionary());
    return Results.Ok();
});

Wat is ProblemDetails?

ProblemDetails (RFC 7807) is een standaardindeling in JSON voor HTTP-foutreacties. De indeling bevat velden zoals type, title, status en detail, waardoor clients een voorspelbare foutstructuur krijgen.

{
  "type": "https://tools.ietf.org/html/rfc7231",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": { "Email": ["Email is required."] }
}

ValidationProblemDetails

Voor validatiefouten gebruikt ASP.NET Core ValidationProblemDetails. Dit breidt ProblemDetails uit met een woordenboek errors dat elk veld aan zijn berichten koppelt.

return Results.ValidationProblem(result.ToDictionary());
// Produces a 400 ValidationProblemDetails response

FluentValidation-resultaten omzetten

De extensie ToDictionary() zet een ValidationResult om in het woordenboek field -> messages dat ValidationProblem verwacht.

var result = await validator.ValidateAsync(request);
if (!result.IsValid)
{
    IDictionary<string, string[]> errors = result.ToDictionary();
    return Results.ValidationProblem(errors);
}

De uitvoer van ProblemDetails aanpassen

Gebruik AddProblemDetails en een aanpassingsfunctie om elke foutreactie uit te breiden, bijvoorbeeld door een trace-id toe te voegen voor foutopsporing.

builder.Services.AddProblemDetails(options =>
{
    options.CustomizeProblemDetails = ctx =>
        ctx.ProblemDetails.Extensions["traceId"] =
            ctx.HttpContext.TraceIdentifier;
});

Validatie in MVC-controllers

Wanneer automatische validatie is ingeschakeld en [ApiController] wordt gebruikt, retourneren controlleracties ook automatisch ValidationProblemDetails wanneer een aanvraag ongeldig is. Zo blijft de indeling consistent voor alle eindpunten.

[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
    [HttpPost]
    public IActionResult Create(UserRequest request) => Ok();
}

Een validatiefilter voor minimale API's

Je kunt expliciete validatie centraliseren met een eindpuntfilter, zodat elke verwerker overzichtelijk blijft.

app.MapPost("/users", (UserRequest r) => Results.Ok())
   .AddEndpointFilter<ValidationFilter<UserRequest>>();

Automatische of expliciete validatie kiezen

Automatische validatie is handig, maar verbergt de validatiestap. Expliciete validatie is uitgebreider, maar transparant en makkelijker te testen. Veel teams kiezen voor expliciete validatie in combinatie met een gedeeld filter, zodat ze het beste van beide krijgen.

Korte controle

Controleer de integratie van API-validatie.

Samenvatting

Validatie integreren betekent dat je validators registreert met AddValidatorsFromAssembly, optioneel automatische validatie inschakelt en fouten als ValidationProblemDetails retourneert via Results.ValidationProblem(result.ToDictionary()). Met DI kunnen validators opslagplaatsen gebruiken voor asynchrone regels, en je kunt ProblemDetails aanpassen of eindpuntfilters gebruiken om verwerkers overzichtelijk te houden.

Gratis beginnen

Leer C# met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
93
Lessen
346

Veelgestelde vragen

Is de les “Validatie integreren met API's” gratis?

Ja — de volledige tekst van “Validatie integreren met API's” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C# Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C# Academy bevat in totaal 4 lessen.

Wat leer ik in “Validatie integreren met API's”?

Retourneer duidelijke antwoorden met validatiefouten. Je oefent met C# Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C# Academy te beginnen?

Ervaring vooraf is niet nodig. C# Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Validatie integreren met API's”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C# Academy?

Ja. Elke les over C# Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Validatie met data-annotaties
  2. FluentValidation-regels
  3. Aangepaste en voorwaardelijke regels
  4. Validatie integreren met API's
← Terug naar C# Academy