NodeJS est une plateforme puissante pour créer des applications Web. Dans cette section, nous explorerons comment créer un serveur de base avec NodeJS, en nous concentrant spécifiquement sur la validation et l'authentification des requêtes. Ceci est essentiel pour garantir la sécurité et l'intégrité des données de votre application.
Créer un serveur de base
Pour commencer, créons un serveur HTTP de base avec NodeJS. Tout d’abord, vous devez installer NodeJS et npm (Node Package Manager) sur votre ordinateur. Une fois installé, vous pouvez créer un nouveau fichier JavaScript, par exemple server.js
, et ajouter le code suivant :
const http = exiger('http');
const serveur = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type' : 'text/plain'});
res.end('Bonjour tout le monde\n');
});
serveur.écouter(3000, '127.0.0.1', () => {
console.log('Serveur en écoute sur le port 3000');
});
Ce code crée un serveur HTTP qui écoute sur le port 3000 et répond par « Hello World » à toutes les requêtes. Pour démarrer le serveur, vous pouvez exécuter la commande node server.js
dans le terminal.
Demande de validation
La validation des demandes est un élément crucial de toute application Web. Il garantit que les données reçues du client sont dans le format correct et sont conformes à toutes les règles commerciales. Pour ajouter une validation de demande à notre serveur, nous pouvons utiliser une bibliothèque appelée joi
. Installez-le d'abord avec la commande npm install joi
puis importez-le dans votre fichier server.js :
const Joi = require('joi');
Vous pouvez désormais définir un schéma de validation pour vos demandes. Par exemple, si vous créez une API pour un blog, vous souhaiterez peut-être valider les demandes d'articles de blog comme ceci :
schéma const = Joi.object({
titre : Joi.string().min(3).max(30).required(),
contenu : Joi.string().min(5).required(),
});
Ce schéma définit que le titre de l'article de blog doit être une chaîne d'un minimum de 3 et d'un maximum de 30 caractères, et que le contenu de l'article doit être une chaîne d'un minimum de 5 caractères. Vous pouvez utiliser ce schéma pour valider des requêtes comme celle-ci :
const validation = schema.validate(req.body);
si (validation.erreur) {
res.status(400).send(validation.error.details[0].message);
retour;
}
Authentification des demandes
L'authentification est un autre élément crucial de toute application Web. Il garantit que seuls les utilisateurs autorisés peuvent accéder à certaines fonctionnalités. Pour ajouter une authentification à notre serveur, nous pouvons utiliser une bibliothèque appelée passport
. Installez-le d'abord avec la commande npm install passeport
puis importez-le dans votre fichier server.js :
const passeport = require('passeport');
Passport prend en charge de nombreuses stratégies d'authentification, telles que l'authentification locale, OAuth et JWT. Pour cet exemple, nous allons utiliser l'authentification locale. Tout d'abord, nous devons configurer le Passeport :
passeport.use (nouvelle stratégie locale (
fonction (nom d'utilisateur, mot de passe, terminé) {
User.findOne({ nom d'utilisateur : nom d'utilisateur }, fonction (erreur, utilisateur) {
if (err) { return done (err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done (null, utilisateur);
});
}
));
Ce code configure Passport pour utiliser la stratégie locale. Il essaie de trouver un utilisateur avec le nom d'utilisateur donné et vérifie le mot de passe. Si le mot de passe est correct, l'utilisateur est authentifié.
Pour sécuriser un itinéraire avec authentification, vous pouvez utiliser la méthode authenticate
de Passport :
app.post('/login', passeport.authenticate('local', { successRedirect: '/',
échecRedirect : '/login' }));
Ce code sécurise la route /login avec une authentification locale. Si l'authentification réussit, l'utilisateur est redirigé vers la route /. En cas d'échec, l'utilisateur est redirigé vers la route /login.
En résumé, créer un serveur de base avec NodeJS implique de configurer le serveur, de valider les requêtes et d'authentifier les utilisateurs. La validation garantit que les données entrantes sont dans le format correct, tandis que l'authentification garantit que seuls les utilisateurs autorisés peuvent accéder à certaines ressources.