Introduction
L'API Management est essentiel pour sécuriser, monitorer et scaler vos services. Il centralise l'authentification, le contrôle de débit et l'observabilité. Ce tutoriel vous guide pas à pas dans la création d'une couche de gestion d'API professionnelle avec Express et TypeScript. Vous apprendrez à protéger vos endpoints tout en maintenant des performances optimales.
Prérequis
- Node.js 20+
- TypeScript 5+
- Connaissances de base en Express et REST
- npm ou pnpm
Initialisation du projet
mkdir api-management && cd api-management
npm init -y
npm install express jsonwebtoken express-rate-limit helmet winston
npm install -D typescript @types/express @types/node ts-nodeCette commande initialise le projet et installe les dépendances essentielles pour la gestion d'API : authentification, limitation de débit et logging structuré.
Configuration TypeScript
{
"compilerOptions": {
"target": "ES2022",
"module": "commonjs",
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true
}
}Le fichier tsconfig configure la compilation TypeScript pour un code propre et moderne, prêt pour la production.
Serveur Express de base
import express from 'express';
import helmet from 'helmet';
const app = express();
app.use(helmet());
app.use(express.json());
app.get('/api/health', (req, res) => {
res.json({ status: 'ok', timestamp: new Date() });
});
app.listen(3000, () => console.log('API Management actif sur le port 3000'));Ce serveur de base intègre Helmet pour la sécurité et pose les fondations d'une API gérée avec des endpoints protégés.
Implémentation du rate limiting
import rateLimit from 'express-rate-limit';
export const apiLimiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100,
message: { error: 'Trop de requêtes, réessayez plus tard.' },
standardHeaders: true,
legacyHeaders: false,
});Ce middleware limite les requêtes à 100 par IP toutes les 15 minutes, protégeant l'API contre les abus et les attaques DDoS.
Authentification JWT
import { Request, Response, NextFunction } from 'express';
import jwt from 'jsonwebtoken';
export const authenticate = (req: Request, res: Response, next: NextFunction) => {
const token = req.headers.authorization?.split(' ')[1];
if (!token) return res.status(401).json({ error: 'Token manquant' });
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET!);
(req as any).user = decoded;
next();
} catch {
res.status(403).json({ error: 'Token invalide' });
}
};Ce middleware vérifie les tokens JWT pour sécuriser les routes sensibles et injecter les informations utilisateur dans la requête.
Bonnes pratiques
- Toujours utiliser HTTPS en production
- Centraliser la configuration des middlewares
- Logger toutes les requêtes avec des identifiants de corrélation
- Versionner vos APIs (/v1/)
- Surveiller les métriques avec Prometheus
Erreurs courantes à éviter
- Oublier de gérer les erreurs async dans les middlewares
- Appliquer le rate limiting globalement sans exclusion
- Stocker les secrets en dur dans le code
- Ignorer les headers CORS et de sécurité
Pour aller plus loin
Découvrez nos formations avancées sur l'API Management et l'architecture microservices : https://learni-group.com/formations