OUJOOD.COM
Introduction : Qu’est-ce que la Limitation de Débit ?
La limitation de débit, c’est comme un portier qui dit "Pas trop vite !" aux visiteurs. Si quelqu’un envoie trop de requêtes (par exemple, pour surcharger votre serveur ou essayer de deviner un mot de passe), on peut le bloquer temporairement. Avec ExpressJS, express-rate-limit agit comme ce portier, en fixant une limite claire et automatique.
É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é "debit-limitation" 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/debit-limitation, puis tapeznpm init -y. Cela crée un fichierpackage.json. - Installez ExpressJS et express-rate-limit : Tapez
npm install express express-rate-limit.express-rate-limitgère la limitation pour nous.
Étape 2 : Créer une Application avec Limitation de Débit
Construisons une application simple avec une route limitée à quelques requêtes par minute.
Exemple de Code : Application avec Rate Limiting
Créez un fichier nommé app.js dans votre dossier "debit-limitation" et ajoutez ce code :
var express = require('express');
var rateLimit = require('express-rate-limit');
var app = express();
// Configurer la limitation de débit
var limiter = rateLimit({
windowMs: 60 * 1000, // 1 minute
max: 5, // 5 requêtes maximum par IP
message: 'Trop de requêtes ! Réessayez dans une minute.'
});
// Appliquer la limitation à toutes les routes
app.use(limiter);
// Route principale
app.get('/', function(req, res) {
res.send('Bonjour ! Cette route est limitée à 5 visites par minute.');
});
// Route de test
app.get('/test', function(req, res) {
res.send('Page de test limitée 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 rateLimit = require('express-rate-limit'); : On importe le module pour limiter les requêtes.
- var limiter = rateLimit({...}); : On configure la limitation :
windowMs: 60 * 1000: Fenêtre de temps de 1 minute (en millisecondes).max: 5: Maximum 5 requêtes par IP dans cette fenêtre.message: ...: Message affiché quand la limite est dépassée.
- app.use(limiter); : On applique la limitation à toutes les routes.
- app.get('/', ...); : Route principale avec un message simple.
- app.get('/test', ...); : Une autre route pour tester la limitation.
Étape 3 : Tester l’Application
Démarrez le serveur avec node app.js dans le terminal, puis testez :
- http://localhost:3000 : Vous verrez "Bonjour ! Cette route est limitée à 5 visites par minute.".
- Rafraîchissez la page 5 fois rapidement : Les 5 premières fois, ça fonctionne.
- À la 6e fois (dans la même minute) : Vous verrez "Trop de requêtes ! Réessayez dans une minute.".
- Essayez http://localhost:3000/test : Même limite, car toutes les routes sont protégées.
Attendez une minute, puis réessayez : la limite se réinitialise, et vous pouvez visiter à nouveau.
Conclusion
Félicitations ! Vous savez maintenant limiter le débit avec ExpressJS et express-rate-limit. Votre application est protégée contre les abus ou les attaques par surcharge. Pour aller plus loin, explorez notre prochain tutoriel sur Ralentissement des Réponses avec ExpressJS ou consultez la documentation express-rate-limit.