Module 07
⭐⭐⭐ Difficile
~3h
🔁 API Production-Ready
Rendre une API existante robuste et observable : réponses uniformes, gestion d'erreurs standardisée, logging structuré, rate limiting, cache, et audit log.
🔧 Pipeline à mettre en place
// main.ts — configuration globale
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// 1. Middleware
app.use(new LoggerMiddleware().use); // Log structuré
app.use(new RateLimitMiddleware().use); // 100 req/min/IP
// 2. Guards globaux
app.useGlobalGuards(new JwtAuthGuard(reflector));
// 3. Interceptors globaux (ordre important !)
app.useGlobalInterceptors(
new LoggingInterceptor(), // Durée de chaque requête
new TransformInterceptor(), // Wrapping { data, statusCode, timestamp }
new TimeoutInterceptor(), // 10s timeout
);
// 4. Pipes
app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));
// 5. Exception filters
app.useGlobalFilters(new AllExceptionsFilter());
await app.listen(3000);
}
✅ Composants à implémenter
TransformInterceptor— réponse uniforme{data, statusCode, timestamp}LoggingInterceptor— log METHOD URL → statusCode en XmsTimeoutInterceptor— timeout 10s avec message clairAllExceptionsFilter— format d'erreur uniformeRateLimitMiddleware— 100 req/min par IP, headers X-RateLimit-*AuditInterceptor— enregistre toutes les mutations en DB- Cache sur GET /products avec TTL 60s