Passer au contenu du pied de page
Iron Academy Logo
Application C#
Application C#

Autres catégories

Validation des données minimal API dans .NET 10: Une analyse approfondie avec Tim Corey

Tim Corey
10m 28s

La validation des données est un aspect critique du développement d'API. Sans une validation adéquate, les applications logicielles risquent d'accepter des données malformées, malveillantes ou des requêtes invalides, entraînant des corruptions de données, des vulnérabilités de sécurité comme l'injection SQL, le cross-site scripting, et même des dépassements de tampon. Assurer qu'une requête entrante est bien formée, contient le format attendu, et respecte les types de données définis dans votre backend est essentiel pour l'intégrité des données, une gestion robuste des erreurs, et la confiance des développeurs.

Dans sa vidéo "Minimal API Data Validation Changes in .NET 10", Tim Corey passe en revue les améliorations de validation dans les Minimal APIs, démontrant comment les développeurs peuvent appliquer une validation complète sur les classes et les enregistrements. Tim explique non seulement comment empêcher les données invalides, mais aussi comment réduire la duplication de code, rationaliser la logique de validation, et renvoyer les codes d'état HTTP appropriés lorsque la validation échoue. Suivons la démonstration de Tim pour une compréhension plus approfondie de la validation des données dans les Minimal APIs.

Introduction à la validation des Minimal APIs

Tim Corey commence par souligner que les Minimal APIs dans .NET 10 ont reçu plusieurs mises à niveau, avec la validation des requêtes étant l'une des principales améliorations. Cela permet aux requêtes entrantes, que ce soit par la chaîne de requête, les en-têtes ou le corps de la requête, d'être automatiquement validées. Tim souligne qu'une validation appropriée améliore non seulement l'expérience des développeurs mais empêche également les requêtes malformées d'atteindre la logique métier, ce qui est essentiel pour maintenir l'intégrité des données et protéger les informations sensibles.

Tim note aussi que sa vidéo fait partie d'une série de formation rapide de 10 minutes, conçue pour fournir des conseils pratiques sans entrer trop profondément dans la théorie abstraite. Il encourage les spectateurs à télécharger son code source pour suivre.

Configurer une API minimale pour la validation

Pour démontrer les règles de validation, Tim configure une API minimale à partir d'un nouveau projet de fichier, la simplifiant pour se concentrer sur la validation d'API. Son exemple d'API inclut :

  • Un point de terminaison Hello World pour tester la connectivité.

  • Une requête POST /person qui accepte un objet Person.

  • Une requête POST /login pour un enregistrement Login.

Tim exécute l'API et montre que les données malformées sont d'abord acceptées. Par exemple, envoyer un objet Person vide ou un email invalide dans l'enregistrement Login aboutit quand même à une réponse API réussie. Cela démontre le besoin de validation de schéma et de validation des requêtes pour empêcher que des données invalides ne soient traitées dans le backend.

Ajout de services de validation aux Minimal APIs

Tim explique que la première étape pour implémenter une validation appropriée est d'enregistrer les services de validation dans l'API :

builder.Services.AddValidation();

En ajoutant ce service, les handlers de route effectuent automatiquement la vérification des types, la validation des formats, et la validation du contenu sur les requêtes entrantes. Tim souligne que cette étape est essentielle pour s'assurer que les échecs de validation génèrent des messages d'erreurs plutôt que de laisser passer des données malveillantes.

Validation des classes : Exemple avec modèle Person

Tim ajoute des attributs de validation à la classe Person en using System.ComponentModel.DataAnnotations. Il marque les propriétés comme requises et impose une validation de format avec des contraintes de longueur minimale :

[Required]
[MinLength(2)]
public string FirstName { get; set; }

[Required]
[MinLength(2)]
public string LastName { get; set; }

L'exécution de l'API déclenche maintenant des erreurs de validation si le corps de la requête manque de champs requis ou contient des données malformées. Par exemple, envoyer un LastName d'un seul caractère produit une erreur 400 Bad Request avec un message d'erreur détaillé :

"Le champ LastName doit être de type chaîne ou de tableau avec une longueur minimale de 2."

Tim souligne que l'utilisation de bibliothèques de validation comme celle-ci réduit la duplication de code et permet aux développeurs de se concentrer sur la logique métier plutôt que d'écrire une logique de validation répétitive dans chaque handler de route.

Validation des enregistrements : Exemple avec Login Record

La validation des enregistrements diffère légèrement car leurs propriétés sont définies dans le constructeur. Tim démontre comment appliquer des règles de validation sur les enregistrements en utilisant la syntaxe [property:] :

public record Login(
    [property: Required, EmailAddress] string Email,
    [property: Required, MinLength(10)] string Password,
    [property: Compare(nameof(Password))] string ConfirmPassword
);

Points clés expliqués par Tim :

  • La validation par email s'assure que le champ Email suit le format correct.

  • La longueur minimale sur le mot de passe protège contre les requêtes malformées ou les mots de passe faibles.

  • [Compare(nameof(Password))] s'assure que ConfirmPassword correspond au mot de passe original, évitant la corruption de données ou les échecs de validation dans les objets imbriqués.

Tim exécute la requête post pour le point de terminaison de login et montre que les formats d'email invalides, les mots de passe courts, ou les mots de passe de confirmation non concordants déclenchent automatiquement les erreurs de validation. Une fois que les champs correspondent au format attendu, la réponse de l'API réussit.

Pièges à éviter : L'accessibilité est importante

Tim pointe une subtilité : la validation échoue en silence si les classes ou les enregistrements ne sont pas publics. Même si la requête API se lie avec succès à l'objet, les résultats de validation ne seront pas appliqués :

internal record Login(...); // La validation ne s'exécutera pas

Il explique que bien que les données malveillantes ou les entrées invalides puissent toujours remplir les objets, la stratégie de validation est contournée. Ce comportement est documenté dans ASP.NET Core, mais Visual Studio ne prévient pas les développeurs, il est donc crucial de régulièrement réviser les règles de validation et de s'assurer que tous les modèles API sont publics.

Avantages de l'utilisation de la validation des Minimal APIs

Tim conclut en résumant les avantages de la validation des données de l'API dans les Minimal APIs :

  1. Élimine la logique de validation manuelle : Pas besoin d'écrire des vérifications répétitives pour chaque propriété.

  2. Assure l'intégrité des données : Empêche les requêtes malformées de corrompre le backend ou les objets imbriqués.

  3. Améliore la sécurité : Réduit l'exposition aux données malveillantes, l'injection SQL, le cross-site scripting, et d'autres vulnérabilités de sécurité.

  4. Fournit des messages d'erreurs clairs : Renvoie les échecs de validation avec des messages d'erreurs et les codes d'état HTTP appropriés (comme 400 Bad Request).

  5. Améliore l'expérience des développeurs : Une validation déclarative et propre réduit la duplication de code et améliore la confiance dans les réponses de l'API.

  6. Prend en charge une validation complète : Fonctionne automatiquement sur le corps de la requête, les chaînes de requêtes, les en-têtes et les objets imbriqués.

En suivant l'approche de Tim, les développeurs peuvent implémenter une validation complète sans écrire de méthodes de validation personnalisées ou répéter la logique de validation sur plusieurs points d'accès.

Conclusion

La vidéo de Tim Corey fournit un guide pratique, étape par étape, pour implémenter la validation d'API dans les Minimal APIs avec .NET 10. De l'ajout de services de validation à l'ornementation des classes et enregistrements avec des attributs, et à la compréhension des pièges potentiels, Tim montre comment faire respecter l'intégrité des données, la validation du format et la gestion efficace des erreurs.

Une validation correcte des données d'API garantit que votre API REST ne traite que les requêtes bien formées, réduisant les risques liés aux données malveillantes, aux injections SQL, au cross-site scripting et aux autres vulnérabilités de sécurité. L'utilisation de règles de validation, de la validation de schéma et d'une stratégie de validation appropriée renforce la confiance des développeurs tout en maintenant un backend propre et sécurisé.

En suivant les conseils de Tim, les développeurs peuvent mettre en œuvre un pipeline de validation robuste, sécurisé et fiable, garantissant que chaque requête post, chaque objet et chaque requête API adhère aux formats attendus, protégeant ainsi à la fois le backend et l'utilisateur final.

Hero Worlddot related to Validation des données minimal API dans .NET 10: Une analyse approfondie avec Tim Corey
Hero Affiliate related to Validation des données minimal API dans .NET 10: Une analyse approfondie avec Tim Corey

Gagnez plus en partageant ce que vous aimez

Vous créez du contenu pour les développeurs travaillant avec .NET, C#, Java, Python ou Node.js ? Transformez votre expertise en revenu supplémentaire !

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi