Niveau :


5 minutes de lecture

Dans cet article, vous allez apprendre à utiliser la validation de modèle de données à l’aide d’expressions lambda et aussi personnaliser les erreurs pour les rendre plus lisible à l’utilisateur ainsi :
- Pourquoi la validation de Modèle ?
- Prérequis
- La validation de modèle sans FluentValidation
- Configuration de FluentValidation
- Création d’un Validator
Pourquoi la validation de Modèle ?
Aujourd’hui, la validation des modèles est souvent un élément mis de côté par les développeurs du fait de la lourdeur d’écriture et des modifications constantes de ceux-ci durant le développement du projet .
Les solutions choisis sont plutôt de passer soit par des filters soit de déléguer cette validation au middleware.
FluentValidation est là pour répondre à ces problèmes grâce aux expressions lambda, aux personnalisations des messages d’erreurs, à une meilleure visibilité des contraintes, ect.
Prérequis
- Un projet API web ASP.NET Core que vous pouvez trouver ci-dessous :
La validation de modèle sans FluentValidation
Dans le projet ci-dessus, la validation de modèle se fait à l’aide de la propriété ModelState qui est contenue dans la classe de base ControllerBase. Cette validation s’effectue grâce aux attributs que l’on va trouver sur le modèle provenant du namespace System.ComponentModel.DataAnnotations :

Vous trouverez dans la classe System.ComponentModel.DataAnnotations toute la liste des attributs disponibles. Si on combine des personnalisations de message, des attributs d’obligation avec des masques de saisies obligatoires, ect, vous obtenez rapidement un code assez indigeste et pas évident à maintenir de mon point du vue. Si nous testons l’application en renseignant la propriété BarCode avec plus de 8 caractères, nous obtenons donc le message ci-dessous :

Configuration de FluentValidation
Nous allons installer et configurer FluentValidation en appliquant les mêmes règles du DataAnnotations. Installez le package FluentValidation.AspNetCore et configurez la class Program.cs comme ci-dessous :
Création d’un Validator
Il ne reste plus qu’à créer la classe CoffeeModelValidator que nous avons déclaré dans la classe ci-dessus. Cette classe va remplacer les attributs de la classe CoffeeModel :
using FluentValidation.Net.Models;
namespace FluentValidation.Net.Validators
{
public class CoffeeModelValidator : AbstractValidator<CoffeeModel>
{
public CoffeeModelValidator()
{
RuleFor(coffee => coffee.Title)
.NotNull()
.NotEmpty();
RuleFor(coffee => coffee.Description)
.Length(0, 25);
RuleFor(coffee => coffee.Title)
.Length(8, 8)
.WithMessage("The Bar Code must be a mandatory string length of 8.");
}
}
}
Vous remarquerez que cette classe hérite d'AbstractValidator du namespace FluentValidation. Relancez l’application et effectuez quelques tests :



