Validation de schéma en Node.js avec Joi

Accepter des données non testées et non validées dans une application web peut entraîner des vulnérabilités de sécurité, et des problèmes imprévus peuvent découler des données invalides.

Les ORM Node.js, tels que Sequelize et TypeORM, vous permettent de définir des règles de validation au niveau de l’application. Pendant le développement de l’API, les données proviennent de requêtes HTTP vers des points d’extrémité spécifiques. Cela se produit au niveau de la requête ; par conséquent, la validation par défaut proposée par les ORM ne s’applique pas à eux.

Joi est une description de schéma et un validateur de données pour JavaScript. Ici, vous apprendrez à utiliser la bibliothèque de validation Joi pour valider les données au niveau de la requête.

Mise en place d’un projet de démonstration

Pour démontrer comment Joi valide les données, vous allez créer une application de démonstration simple qui imite une application réelle.

Tout d’abord, créez un dossier de projet et déplacez-vous dans celui-ci en exécutant la commande suivante :

Ensuite, initialisez npm dans votre répertoire de projet en exécutant :

Ensuite, vous aurez besoin d’installer quelques dépendances. Les dépendances requises pour ce tutoriel sont les suivantes :

  • Express: Express est un framework Node.js qui fournit un ensemble robuste de fonctionnalités pour les applications web et mobiles. Express facilite la création d’applications dorsales avec Node.js.
  • Joi: Joi est une bibliothèque de validation de données pour Node.js.

Installez les dépendances avec le gestionnaire de paquets node en exécutant la commande ci-dessous :

Ensuite, créez un fichier index.js dans votre répertoire racine et ajoutez-y le bloc de code suivant :

Le bloc de code ci-dessus met en place un serveur Express simple. Il configure l’intergiciel pour analyser les données de demande entrantes et traiter les demandes entrantes et démarre le serveur pour écouter les demandes entrantes sur le port 3000.

Voir aussi :  Comment utiliser la directive angulaire intégrée : ngIf, ngFor, ngClass, etc.

Acheminement et traitement des demandes

Par souci de simplicité, vous allez créer un intergiciel de traitement des demandes qui renvoie un code d’état, ainsi que le corps de la demande, en réponse à chaque demande qui tente d’envoyer des données à votre application.

Créez un handler.js dans le répertoire racine de votre projet et ajoutez le bloc de code ci-dessous :

Ensuite, créez un fichier router.js dans le répertoire racine de votre projet et ajoutez-y le bloc de code ci-dessous :

Création d’un schéma Joi

Un schéma Joi représente la structure attendue d’un objet de données spécifique et les règles de validation.

Pour créer un schéma Joi, vous pouvez utiliser la fonction Joi.object() et enchaîner diverses règles de validation exposées par Joi pour définir la structure et les exigences de validation de vos données.

Par exemple :

L’exemple ci-dessus décrit un schéma Joi simple avec une méthode nom propriété. La propriété nom a une valeur de Joi.string().min(3).required(). Cela signifie que la propriété nom doit être une chaîne de caractères, d’une longueur minimale de 3 caractères, et qu’elle est obligatoire.

Avec Joi, vous pouvez enchaîner différentes méthodes pour ajouter d’autres contraintes de validation à chaque champ défini dans votre schéma.

Voici un exemple avec plus de champs et de contraintes de validation :

Les userSchema définit les contraintes suivantes pour chaque propriété :

  • email: Doit être une chaîne de caractères valide.
  • mot de passe: Doit être une chaîne de 6 caractères au minimum.
  • âge: Un nombre facultatif avec une valeur minimale de 18.
  • employé: Un booléen facultatif.
  • téléphone: Une chaîne de caractères obligatoire qui correspond à l’expression rationnelle spécifiée (/^d3-d3-d4$/).
  • adresse: Un objet représentant l’adresse de l’utilisateur avec les sous-propriétés suivantes.
    • rue: Une chaîne obligatoire d’une longueur minimale de 3 caractères.
    • ville: Chaîne de caractères obligatoire d’une longueur minimale de 3 caractères.
    • état: Chaîne obligatoire d’une longueur minimale de 3 caractères.
    • zip: Un nombre obligatoire avec une valeur minimale de 3.
  • hobbies: Un tableau de chaînes de caractères.
Voir aussi :  Authentification des utilisateurs avec Firebase & React

En plus des contraintes, userSchema définit les abortEarly à faux Par défaut, Joi arrête l’exécution du programme dès qu’il rencontre la première erreur et imprime l’erreur sur la console. Cependant, en réglant cette option à false garantit que Joi vérifie l’ensemble du schéma et affiche toutes les erreurs rencontrées sur la console.

Validation des données avec Joi

Créez un validation.js et ajoutez le fichier userSchema à ce fichier.

Comme suit :

Ensuite, créez un intergiciel qui intercepte les charges utiles des requêtes et les vérifie par rapport à un schéma fourni en ajoutant le code suivant sous le code userSchema code.

Lorsqu’une demande est faite, l’intergiciel invoque le code valider de la méthode schéma pour valider le corps de la demande. En cas d’erreur de validation, l’intergiciel envoie un message 400 Bad Request (mauvaise demande) contenant les messages d’erreur extraits des détails de l’erreur de validation.

En revanche, si la validation se déroule sans erreur, l’intergiciel appelle la réponse next() de l’intergiciel.

Enfin, exportez la fonction validationMiddleware et userSchema.

Test des contraintes de validation

Importation validationMiddleware et userSchema dans votre router.js et configurez l’intergiciel comme suit :

Démarrez votre application en exécutant la commande ci-dessous :

Ensuite, faites une requête HTTP POST à localhost:3000/signup en utilisant les données de test ci-dessous. Vous pouvez effectuer cette opération à l’aide de cURL ou de tout autre client API.

Cette requête échouera et renverra un objet d’erreur car la charge utile contient de nombreux champs non valides, tels que l’adresse électronique, le mot de passe, l’âge et le numéro de téléphone. En utilisant l’objet d’erreur fourni, vous pouvez gérer les erreurs de manière appropriée.

Voir aussi :  Qu'est-ce que la table ASCII et comment l'utiliser ?

Simplifier la validation des données avec Joi

Vous avez couvert la plupart des bases de la validation des données à l’aide de Joi. Cependant, vous pouvez couvrir des techniques et des contraintes plus avancées dans la documentation de Joi.

Joi simplifie la tâche de validation des données en JavaScript, en fournissant une solution intuitive qui améliore considérablement la fiabilité et l’intégrité des données stockées dans votre application.

Comment valider le schéma Joi ?

Il suffit de taper :

  • npm install joi.
  • Joi.
  • Joi.
  • const handler = (req, res, next) = { // gérer notre requête } const middleware = (req, res, next) => { // à définir } app.
  • (req, res, next) => { const result = Joi.
  • // schemas.js const Joi = require(‘joi’) const schemas = { blogPOST : Joi.

Comment valider en utilisant Joi dans Nodejs ?

Pour commencer, ouvrez votre terminal en ligne de commande et créez un nouveau répertoire de projet :

  • mkdir joi-schema-validation.
  • cd joi-schema-validation.
  • npm init -y.
  • npm install body-parser @1.18.
  • nano app.
  • // chargement des dépendances const express = require(‘express’) ; const logger = require(‘morgan’) ; const bodyParser = require(‘body-parser’) ;

Comment valider les données d’un formulaire dans JOI ?

Vérifier la présence d’un caractère spécifique Pour vérifier la présence de caractères spécifiques dans un champ de type chaîne dans un schéma Joi, vous pouvez utiliser la méthode regex. Cette méthode vous permet de spécifier une expression régulière à laquelle la valeur doit correspondre pour être considérée comme valide.

Qu’est-ce que la validation de schéma dans Nodejs ?

La validation de schéma est une étape importante dans la construction d’applications Node. js robustes et sécurisées. Elle consiste à valider les données transmises à votre application par rapport à un schéma prédéfini, ce qui permet de s’assurer que les données sont du bon type, du bon format et de la bonne structure.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *