Validierung in APIs integrieren
Geben Sie übersichtliche Antworten mit Validierungsfehlern zurück.
Validierung in APIs integrieren ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
FluentValidation in ASP.NET Core integrieren
Um Anfragen automatisch zu validieren, registrieren Sie Ihre Validatoren bei der Dependency Injection. Der Helfer AddValidatorsFromAssembly durchsucht eine Assembly und registriert jeden darin gefundenen Validator.
using FluentValidation;
builder.Services
.AddValidatorsFromAssemblyContaining<CustomerValidator>();Middleware für die automatische Validierung
Modernes FluentValidation setzt auf explizite Validierung, Sie können jedoch auch eine automatische Validierung aktivieren, die in das Model Binding eingebunden wird, sodass ungültige Anfragen abgewiesen werden, bevor Ihre Action ausgeführt wird.
dotnet add package FluentValidation.AspNetCore
builder.Services.AddFluentValidationAutoValidation();Aus DI aufgelöste Validatoren
Da die Validatoren bei der DI registriert sind, können sie Services wie Repositories injizieren. Dadurch funktionieren asynchrone, datenbankgestützte Regeln nahtlos in Ihrer API.
public class UserValidator : AbstractValidator<UserRequest>
{
public UserValidator(IUserRepository repo)
{
RuleFor(u => u.Email)
.MustAsync(async (e, ct) => !await repo.ExistsAsync(e));
}
}Explizite Validierung in einem Endpoint
Viele Teams bevorzugen aus Gründen der Übersichtlichkeit eine explizite Validierung. Injizieren Sie IValidator<T> und rufen Sie ihn am Anfang des Handlers auf.
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();
});Was ist ProblemDetails?
ProblemDetails (RFC 7807) ist ein standardisiertes JSON-Format für HTTP-Fehlerantworten. Es enthält Felder wie type, title, status und detail und bietet Clients eine vorhersehbare Struktur für Fehler.
{
"type": "https://tools.ietf.org/html/rfc7231",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": { "Email": ["Email is required."] }
}ValidationProblemDetails
Für Validierungsfehler verwendet ASP.NET Core ValidationProblemDetails. Diese Klasse erweitert ProblemDetails um ein errors-Wörterbuch, das jedes Feld seinen Meldungen zuordnet.
return Results.ValidationProblem(result.ToDictionary());
// Produces a 400 ValidationProblemDetails responseFluentValidation-Ergebnisse konvertieren
Die Erweiterung ToDictionary() wandelt ein ValidationResult in das field -> messages-Wörterbuch um, das ValidationProblem erwartet.
var result = await validator.ValidateAsync(request);
if (!result.IsValid)
{
IDictionary<string, string[]> errors = result.ToDictionary();
return Results.ValidationProblem(errors);
}Die ProblemDetails-Ausgabe anpassen
Verwenden Sie AddProblemDetails und einen Customizer, um jede Fehlerantwort anzureichern, beispielsweise durch das Hinzufügen einer Trace-ID zur Fehlersuche.
builder.Services.AddProblemDetails(options =>
{
options.CustomizeProblemDetails = ctx =>
ctx.ProblemDetails.Extensions["traceId"] =
ctx.HttpContext.TraceIdentifier;
});Validierung in MVC-Controllern
Bei aktivierter automatischer Validierung und mit [ApiController] geben Controller-Aktionen bei einer ungültigen Anfrage automatisch ebenfalls ValidationProblemDetails zurück, sodass das Format über alle Endpunkte hinweg konsistent ist.
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpPost]
public IActionResult Create(UserRequest request) => Ok();
}Ein Validierungsfilter für Minimal APIs
Sie können die explizite Validierung mit einem Endpunktfilter zentralisieren, damit jeder Handler übersichtlich bleibt.
app.MapPost("/users", (UserRequest r) => Results.Ok())
.AddEndpointFilter<ValidationFilter<UserRequest>>();Automatische oder explizite Validierung
Die automatische Validierung ist bequem, verbirgt aber den Validierungsschritt. Die explizite Validierung ist ausführlicher, dafür transparent und leichter zu testen. Viele Teams entscheiden sich für explizite Validierung in Kombination mit einem gemeinsamen Filter, um die Vorteile beider Ansätze zu nutzen.
Kurzer Check
Testen Sie die Integration der API-Validierung.
Zusammenfassung
Für die Integration der Validierung registrieren Sie Validatoren mit AddValidatorsFromAssembly, aktivieren optional die automatische Validierung und geben Fehler über Results.ValidationProblem(result.ToDictionary()) als ValidationProblemDetails zurück. Dank DI können Validatoren Repositories für asynchrone Regeln verwenden. Außerdem können Sie ProblemDetails anpassen oder Endpunktfilter einsetzen, damit die Handler übersichtlich bleiben.
Häufig gestellte Fragen
Ist die Lektion „Validierung in APIs integrieren“ kostenlos?
Ja — der vollständige Text von „Validierung in APIs integrieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Validierung in APIs integrieren“?
Geben Sie übersichtliche Antworten mit Validierungsfehlern zurück. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Validierung in APIs integrieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Validierung mit Data Annotations
- FluentValidation-Regeln
- Benutzerdefinierte und bedingte Regeln
- Validierung in APIs integrieren