OUJOOD.COM
Introduction : Qu’est-ce que le Ralentissement des Réponses ?
Le ralentissement des réponses, c’est comme dire "Attends un peu !" à quelqu’un qui frappe trop vite à votre porte. Au lieu de bloquer totalement (comme avec la limitation de débit), on ajoute un petit retard qui augmente à chaque tentative rapide. Avec ExpressJS, express-slow-down agit comme un frein doux pour protéger votre serveur, utile contre les essais répétés (comme deviner un mot de passe).
Étape 1 : Préparer Votre Environnement
Avant de coder, préparons tout ce qu’il faut. Si vous avez suivi les tutoriels précédents, vous avez déjà Node.js et ExpressJS. Voici les étapes :
- Vérifiez Node.js : Ouvrez un terminal et tapez
node -v. Si une version apparaît (ex. : v16.13.0), c’est bon. Sinon, téléchargez Node.js sur nodejs.org. - Créez un dossier projet : Faites un dossier nommé "ralentissement-reponses" sur votre ordinateur. Ouvrez-le dans un éditeur comme Visual Studio Code.
- Initialisez le projet : Dans le terminal, allez dans ce dossier avec
cd chemin/vers/ralentissement-reponses, puis tapeznpm init -y. Cela crée un fichierpackage.json. - Installez ExpressJS et express-slow-down : Tapez
npm install express express-slow-down.express-slow-downgère le ralentissement pour nous.
Étape 2 : Créer une Application avec Ralentissement
Construisons une application simple où les réponses ralentissent après plusieurs requêtes rapides.
Exemple de Code : Application avec Ralentissement
Créez un fichier nommé app.js dans votre dossier "ralentissement-reponses" et ajoutez ce code :
var express = require('express');
var slowDown = require('express-slow-down');
var app = express();
// Configurer le ralentissement
var speedLimiter = slowDown({
windowMs: 60 * 1000, // 1 minute
delayAfter: 3, // Ralentir après 3 requêtes
delayMs: 500 // Ajouter 500ms de délai par requête après la limite
});
// Appliquer le ralentissement à toutes les routes
app.use(speedLimiter);
// Route principale
app.get('/', function(req, res) {
res.send('Bonjour ! Les réponses ralentissent après 3 visites rapides.');
});
// Route de test
app.get('/test', function(req, res) {
res.send('Page de test avec ralentissement aussi !');
});
app.listen(3000, function() {
console.log('Serveur démarré sur http://localhost:3000');
});
Explication Détaillée du Code
Voici chaque partie expliquée très simplement pour les débutants :
- var slowDown = require('express-slow-down'); : On importe le module pour ralentir les requêtes.
- var speedLimiter = slowDown({...}); : On configure le ralentissement :
windowMs: 60 * 1000: Fenêtre de temps de 1 minute.delayAfter: 3: Ralentissement après 3 requêtes dans cette fenêtre.delayMs: 500: Ajoute 500 millisecondes (0,5 seconde) de délai par requête supplémentaire.
- app.use(speedLimiter); : On applique le ralentissement à toutes les routes.
- app.get('/', ...); : Route principale avec un message.
- app.get('/test', ...); : Une autre route pour tester.
Étape 3 : Tester l’Application
Démarrez le serveur avec node app.js dans le terminal, puis testez :
- http://localhost:3000 : Vous verrez "Bonjour ! Les réponses ralentissent après 3 visites rapides.".
- Rafraîchissez la page rapidement 3 fois : Les réponses sont instantanées.
- À la 4e fois (dans la même minute) : La réponse prend 0,5 seconde de plus.
- À la 5e fois : 1 seconde de plus (0,5 + 0,5).
- Essayez http://localhost:3000/test : Même effet sur cette route.
Attendez une minute, et le compteur se réinitialise : les réponses redeviennent rapides.
Conclusion
Félicitations ! Vous savez maintenant ralentir les réponses avec ExpressJS et express-slow-down. Votre application peut décourager les abus tout en restant accessible. Pour aller plus loin, explorez notre prochain tutoriel sur Tests avec ExpressJS ou consultez la documentation express-slow-down.