logo oujood
🔍

Ralentissement des Réponses avec ExpressJS - Guide pour Débutants

Dans ce tutoriel, nous allons apprendre à ralentir les réponses dans une application ExpressJS, c’est-à-dire ajouter un délai progressif aux requêtes pour décourager les abus sans bloquer complètement les utilisateurs. Ce guide est conçu pour les débutants : nous irons doucement, étape par étape, avec des explications très simples et un exemple que vous pourrez tester. Nous utiliserons express-slow-down pour gérer ce ralentissement.

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 tapez npm init -y. Cela crée un fichier package.json.
  • Installez ExpressJS et express-slow-down : Tapez npm install express express-slow-down. express-slow-down gè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 :

📋 Copier le 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.