Intégrer la validation aux API
Renvoyez des réponses d’erreur de validation claires.
Intégrer la validation aux API est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.
Intégrer FluentValidation à ASP.NET Core
Pour valider automatiquement les requêtes, enregistrez vos validateurs auprès de l’injection de dépendances. L’assistant AddValidatorsFromAssembly analyse une bibliothèque compilée et enregistre chaque validator trouvé.
using FluentValidation;
builder.Services
.AddValidatorsFromAssemblyContaining<CustomerValidator>();Intergiciel de validation automatique
La version moderne de FluentValidation privilégie la validation explicite, mais vous pouvez activer une validation automatique qui s’intègre à la liaison du modèle afin que les requêtes non valides soient rejetées avant l’exécution de votre action.
dotnet add package FluentValidation.AspNetCore
builder.Services.AddFluentValidationAutoValidation();Validators résolus via DI
Comme les validateurs sont enregistrés avec DI, ils peuvent injecter des services tels que des référentiels, ce qui permet aux règles asynchrones adossées à une base de données de fonctionner sans difficulté dans votre API.
public class UserValidator : AbstractValidator<UserRequest>
{
public UserValidator(IUserRepository repo)
{
RuleFor(u => u.Email)
.MustAsync(async (e, ct) => !await repo.ExistsAsync(e));
}
}Validation explicite dans un point de terminaison
De nombreuses équipes préfèrent la validation explicite pour plus de clarté. Injectez IValidator<T> et appelez-le au début du handler.
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();
});Qu’est-ce que ProblemDetails
ProblemDetails (RFC 7807) est un format JSON standard pour les réponses d’erreur HTTP. Il contient des champs tels que type, title, status et detail, offrant aux clients une structure d’erreur prévisible.
{
"type": "https://tools.ietf.org/html/rfc7231",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": { "Email": ["Email is required."] }
}ValidationProblemDetails
Pour les échecs de validation, ASP.NET Core utilise ValidationProblemDetails, qui étend ProblemDetails avec un dictionnaire errors associant chaque champ à ses messages.
return Results.ValidationProblem(result.ToDictionary());
// Produces a 400 ValidationProblemDetails responseConvertir les résultats de FluentValidation
L’extension ToDictionary() transforme un ValidationResult en dictionnaire field -> messages attendu par ValidationProblem.
var result = await validator.ValidateAsync(request);
if (!result.IsValid)
{
IDictionary<string, string[]> errors = result.ToDictionary();
return Results.ValidationProblem(errors);
}Personnaliser la sortie de ProblemDetails
Utilisez AddProblemDetails et un personnalisateur pour enrichir chaque réponse d’erreur, par exemple en ajoutant un identifiant de trace pour le débogage.
builder.Services.AddProblemDetails(options =>
{
options.CustomizeProblemDetails = ctx =>
ctx.ProblemDetails.Extensions["traceId"] =
ctx.HttpContext.TraceIdentifier;
});Validation dans les contrôleurs MVC
Lorsque la validation automatique est activée avec [ApiController], les actions des contrôleurs renvoient également automatiquement des ValidationProblemDetails lorsqu’une requête n’est pas valide, ce qui garantit un format uniforme sur tous les points de terminaison.
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpPost]
public IActionResult Create(UserRequest request) => Ok();
}Un filtre de validation pour les API minimales
Vous pouvez centraliser la validation explicite à l’aide d’un filtre de point de terminaison afin que chaque gestionnaire reste clair.
app.MapPost("/users", (UserRequest r) => Results.Ok())
.AddEndpointFilter<ValidationFilter<UserRequest>>();Choisir entre validation automatique et explicite
La validation automatique est pratique, mais elle masque l’étape de validation ; la validation explicite est plus verbeuse, mais transparente et plus facile à vérifier. De nombreuses équipes choisissent une validation explicite associée à un filtre partagé pour bénéficier du meilleur des deux approches.
Vérification rapide
Vérifiez l’intégration de la validation de l’API.
Récapitulatif
Intégrer la validation consiste à enregistrer les validateurs avec AddValidatorsFromAssembly, à activer éventuellement la validation automatique et à renvoyer les erreurs sous forme de ValidationProblemDetails via Results.ValidationProblem(result.ToDictionary()). DI permet aux validateurs d’utiliser des dépôts pour les règles asynchrones, et vous pouvez personnaliser ProblemDetails ou utiliser des filtres de point de terminaison pour garder les gestionnaires clairs.
Apprends C# avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 93
- Leçons
- 346
Questions Fréquemment Posées
La leçon « Intégrer la validation aux API » est-elle gratuite ?
Oui — le texte complet de « Intégrer la validation aux API » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Intégrer la validation aux API » ?
Renvoyez des réponses d’erreur de validation claires. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Intégrer la validation aux API » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Validation par annotations de données
- Règles FluentValidation
- Règles personnalisées et conditionnelles
- Intégrer la validation aux API