C# Academy · Leçon

Intégrer la validation aux API

Renvoyez des réponses d’erreur de validation claires.

Leçon 4 sur 413 étapes

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 response

Convertir 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.

Gratuit pour commencer

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

  1. Validation par annotations de données
  2. Règles FluentValidation
  3. Règles personnalisées et conditionnelles
  4. Intégrer la validation aux API
← Retour à C# Academy