حالات تطبيقية في Express.js

عدد الحالات التطبيقية المتاحة في ⁨Express.js⁩: 30. المستويات: أساسي (10)، متقدم (10)، خبير (10).

جزء من: حالات تطبيقية في الواجهة الخلفية Node.js

أساسيExpress.js

Ajout d'un middleware global de logging simple

Contexte : L'équipe souhaite tracer toutes les requêtes entrantes pour debug basique. Le Problème : Aucun mécanisme centralisé de log n'est présent. Contraintes : Implémenter un middleware global sans librairie externe. Livrable attendu : Ajouter un middleware affichant dans la console la méthode HTTP et l'URL de chaque requête avant traitement.

expressmiddlewarelogging+1
أساسيExpress.js

Configuration d'un port dynamique via variable d'environnement

Contexte : L'application doit fonctionner en local et en production. Le Problème : Le port est codé en dur dans le fichier principal. Contraintes : Utiliser process.env.PORT avec valeur par défaut. Livrable attendu : Modifier la configuration du serveur pour utiliser un port configurable selon l'environnement.

expressenvironmentconfig+1
أساسيExpress.js

Correction d'un body JSON non parsé dans une route POST

Contexte : Une API doit recevoir des données utilisateur via une requête POST. Le Problème : req.body est undefined car aucun middleware de parsing n'est configuré. Code actuel : app.post('/users', (req, res) => { console.log(req.body); res.json({ received: req.body }); }); Contraintes : Utiliser le middleware natif express.json(). Livrable attendu : Configurer correctement Express pour parser le body JSON et renvoyer les données reçues.

expresspostjson+1
أساسيExpress.js

Correction d'un envoi multiple de réponse

Contexte : Une route Express provoque une erreur "Cannot set headers after they are sent". Le Problème : La réponse est envoyée plusieurs fois dans la même requête. Code actuel : app.get('/test', (req, res) => { res.json({ message: 'ok' }); res.send('done'); }); Contraintes : Garantir un seul envoi de réponse par requête. Livrable attendu : Corriger la route afin d'éviter l'envoi multiple et supprimer l'erreur.

expressdebuggingresponse+1
أساسيExpress.js

Création d'une API Express minimale avec route GET fonctionnelle

Contexte : Vous démarrez une petite API interne pour exposer un endpoint simple de test. Le Problème : Aucun serveur Express n'est encore configuré pour répondre aux requêtes HTTP. Contraintes : Utiliser Express uniquement, sans middleware externe. Le serveur doit écouter sur un port défini via variable d'environnement avec valeur par défaut. Livrable attendu : Implémenter un serveur Express minimal avec une route GET / retournant un JSON { "status": "ok" } et un code HTTP 200.

expressnodejsapi+1
أساسيExpress.js

Gestion personnalisée des erreurs 404

Contexte : Les routes inexistantes renvoient une réponse HTML par défaut peu adaptée à une API. Le Problème : Aucun middleware 404 n'est défini. Contraintes : Ajouter un middleware en fin de chaîne. Livrable attendu : Implémenter une gestion 404 retournant un JSON clair { "error": "Not Found" } avec statut 404.

express404error+1
أساسيExpress.js

Implémentation d'un middleware de validation simple

Contexte : Une route POST doit vérifier la présence d'un champ obligatoire dans le body. Le Problème : Les requêtes incomplètes sont acceptées sans validation. Contraintes : Implémenter un middleware de validation manuel. Livrable attendu : Ajouter une validation simple vérifiant la présence d'un champ name et retournant une erreur 400 si absent.

expressvalidationmiddleware+1
أساسيExpress.js

Implémentation d'une route avec paramètre dynamique

Contexte : Une API doit récupérer un utilisateur via son identifiant dans l'URL. Le Problème : Le paramètre n'est pas correctement exploité dans la route. Contraintes : Utiliser req.params pour accéder à l'identifiant. Livrable attendu : Implémenter une route GET /users/:id retournant un JSON contenant l'id fourni dans l'URL.

expressroutingparams+1
أساسيExpress.js

Lecture correcte des query parameters

Contexte : Une route doit filtrer des résultats via des paramètres de requête. Le Problème : Les paramètres ne sont pas récupérés correctement. Contraintes : Utiliser req.query. Livrable attendu : Implémenter une route GET /search capable de lire un paramètre query et de le retourner dans la réponse JSON.

expressqueryrouting+1
أساسيExpress.js

Structuration basique des routes dans un Router séparé

Contexte : Toutes les routes sont actuellement définies dans app.js. Le Problème : Le fichier principal devient difficile à lire. Contraintes : Utiliser express.Router pour modulariser. Livrable attendu : Extraire un ensemble de routes dans un fichier séparé et les monter dans l'application principale via app.use().

expressroutermodularite+1
متقدمExpress.js

Configuration CORS avancée avec contrôle d'origine dynamique

Contexte : L'API doit être accessible uniquement depuis certaines origines front-end. Le Problème : La configuration CORS actuelle autorise toutes les origines. Contraintes : Utiliser le middleware cors avec configuration dynamique. Livrable attendu : Mettre en place une configuration CORS sécurisée autorisant uniquement une liste blanche d'origines.

expresscorssecurity+2
متقدمExpress.js

Gestion propre des transactions avec base de données relationnelle

Contexte : Une route effectue plusieurs opérations base de données dépendantes. Le Problème : En cas d'échec intermédiaire, l'état devient incohérent. Contraintes : Utiliser transactions SQL via ORM ou driver natif. Livrable attendu : Implémenter une transaction garantissant l'atomicité des opérations.

expressdatabasetransactions+2
متقدمExpress.js

Implémentation d'un cache mémoire simple pour améliorer la latence

Contexte : Une route effectue une requête base de données coûteuse à chaque appel. Le Problème : Les temps de réponse sont élevés pour des données peu modifiées. Contraintes : Mettre en place un cache mémoire avec expiration. Livrable attendu : Implémenter un mécanisme de mise en cache réduisant les appels répétés et améliorant la performance globale.

expresscacheperformance+2
متقدمExpress.js

Implémentation d'un middleware centralisé de gestion des erreurs asynchrones

Contexte : Plusieurs routes async utilisent async/await mais certaines erreurs provoquent des crashs serveur. Le Problème : Les erreurs ne sont pas correctement transmises au middleware global. Contraintes : Créer un wrapper pour fonctions async permettant de centraliser la gestion des erreurs. Livrable attendu : Implémenter un système capturant automatiquement les erreurs des routes async et les transmettant au middleware error handler.

expressmiddlewareasync+2
متقدمExpress.js

Implémentation d'un système d'upload sécurisé avec validation et stockage contrôlé

Contexte : Une API doit accepter des fichiers image envoyés par les utilisateurs. Le Problème : Aucun contrôle n'est effectué sur le type ou la taille des fichiers. Contraintes : Utiliser multer avec validation stricte. Livrable attendu : Mettre en place un endpoint sécurisé limitant le type MIME, la taille maximale et gérant les erreurs proprement.

expressuploadmulter+2
متقدمExpress.js

Implémentation d'une validation robuste des requêtes avec Joi

Contexte : Les données envoyées à l'API ne sont pas validées de manière fiable. Le Problème : Des données invalides provoquent des erreurs en base de données. Contraintes : Intégrer Joi pour validation des schémas. Livrable attendu : Mettre en place une validation centralisée des bodies et query parameters avec gestion d'erreur structurée.

expressvalidationjoi+2
متقدمExpress.js

Mise en place d'un système de logs structuré pour environnement production

Contexte : Les logs actuels utilisent uniquement console.log. Le Problème : Les logs sont difficiles à exploiter et analyser. Contraintes : Intégrer une librairie comme winston ou pino. Livrable attendu : Mettre en place un système de logs structuré avec niveaux et format JSON adapté à la production.

expressloggingproduction+2
متقدمExpress.js

Mise en place d'un système de rate limiting pour API publique

Contexte : L'API publique reçoit un volume important de requêtes. Le Problème : Aucun mécanisme ne limite les abus ou attaques par force brute. Contraintes : Utiliser express-rate-limit avec configuration adaptée. Livrable attendu : Implémenter un système limitant le nombre de requêtes par IP et renvoyant une réponse claire en cas de dépassement.

expressratelimitsecurity+2
متقدمExpress.js

Mise en place d'une architecture MVC modulaire avec séparation claire des responsabilités

Contexte : Vous reprenez une API Express dont toutes les routes et la logique métier sont regroupées dans un seul fichier volumineux. Le Problème : Le code est difficile à maintenir, tester et faire évoluer. Contraintes : Implémenter une séparation claire entre routes, contrôleurs et services sans modifier le comportement fonctionnel existant. Livrable attendu : Refactoriser l'application en architecture MVC structurée avec dossiers dédiés (routes, controllers, services) et injection propre des dépendances.

expressmvcarchitecture+2
متقدمExpress.js

Sécurisation des routes avec authentification JWT et middleware dédié

Contexte : Une API expose des routes sensibles accessibles uniquement aux utilisateurs authentifiés. Le Problème : Aucune vérification de token n'est actuellement en place. Contraintes : Utiliser jsonwebtoken et implémenter un middleware de vérification. Livrable attendu : Créer un système d'authentification avec génération de token et middleware protégeant les routes privées.

expressjwtauthentication+2
خبيرExpress.js

Architecture scalable multi-instances avec WebSockets et synchronisation Redis

Contexte : Une application temps réel basée sur Express et Socket.io doit supporter plusieurs milliers de connexions simultanées. Le Problème : En mode multi-instance, les événements ne sont pas synchronisés entre serveurs. Contraintes : Utiliser Redis adapter pour synchroniser les instances. Livrable attendu : Concevoir une architecture scalable permettant la synchronisation des événements WebSocket entre plusieurs instances Express.

expresswebsocketredis+2
خبيرExpress.js

Conception d'une architecture Express enterprise-ready basée sur Clean Architecture

Contexte : Votre API Express a évolué rapidement et mélange routes, logique métier et accès base de données dans les mêmes fichiers. Le Problème : Le couplage fort rend les tests difficiles et complique l'évolution du projet. Contraintes : Appliquer les principes de Clean Architecture avec séparation claire des couches (controllers, use cases, repositories, infrastructure) sans dépendance circulaire. Livrable attendu : Proposer une architecture complète, structurée et scalable permettant une meilleure testabilité, maintenabilité et séparation des responsabilités.

expresscleanarchitecturearchitecture+2
خبيرExpress.js

Implémentation d'un cache distribué avec stratégie d'invalidation fine

Contexte : Une API reçoit des requêtes répétitives sur des données rarement modifiées. Le Problème : Les accès base de données deviennent un bottleneck sous charge. Contraintes : Intégrer Redis pour cache distribué avec TTL et invalidation ciblée. Livrable attendu : Concevoir une stratégie de cache performante garantissant cohérence des données et amélioration significative des temps de réponse.

expressrediscache+2
خبيرExpress.js

Implémentation d'un système d'authentification avancé avec rotation de refresh tokens

Contexte : Une API sécurisée utilise JWT avec access token court. Le Problème : Aucun mécanisme robuste de rotation et d'invalidation des refresh tokens n'est en place. Contraintes : Implémenter access token court, refresh token persistant, rotation automatique et blacklist. Livrable attendu : Concevoir un système sécurisé gérant génération, stockage sécurisé, rotation et révocation des refresh tokens.

expressjwtauthentication+2
خبيرExpress.js

Implémentation d'un système de monitoring et observabilité distribué

Contexte : L'application est déployée sur plusieurs environnements (dev, staging, prod). Le Problème : Les erreurs et performances sont difficiles à tracer en production. Contraintes : Intégrer logs structurés, métriques et tracing distribué. Livrable attendu : Mettre en place une architecture d'observabilité complète facilitant le debug et la surveillance en production.

expressmonitoringobservability+2
خبيرExpress.js

Implémentation d'un système transactionnel robuste avec gestion des rollbacks

Contexte : Une route API effectue plusieurs opérations critiques en base de données. Le Problème : En cas d'erreur intermédiaire, l'état devient incohérent. Contraintes : Utiliser transactions base de données et gestion d'erreur centralisée. Livrable attendu : Concevoir un système garantissant atomicité et cohérence via gestion des transactions et rollbacks sécurisés.

expresstransactionsdatabase+2
خبيرExpress.js

Mise en place d'un système de queue asynchrone avec gestion des retries

Contexte : Certaines routes déclenchent des tâches longues (envoi d'emails, génération de rapports). Le Problème : Les requêtes HTTP restent bloquées pendant le traitement. Contraintes : Intégrer un système de queue (Bull ou équivalent) avec gestion automatique des retries. Livrable attendu : Implémenter une architecture déportant les tâches lourdes dans une file asynchrone tout en garantissant la résilience en cas d'échec.

expressqueueasync+2
خبيرExpress.js

Optimisation des performances sous forte charge avec clustering et load balancing

Contexte : L'API Express subit des pics de trafic importants. Le Problème : L'application tourne sur un seul processus Node.js et n'exploite pas tous les cœurs CPU. Contraintes : Utiliser le module cluster ou PM2 en mode cluster. Livrable attendu : Implémenter une configuration multi-processus avec répartition de charge et monitoring des performances.

expressclusterperformance+2
خبيرExpress.js

Refonte complète pour supporter un environnement cloud-native scalable

Contexte : L'application doit être déployée dans un environnement cloud avec autoscaling. Le Problème : L'architecture actuelle n'est pas optimisée pour conteneurisation et scalabilité horizontale. Contraintes : Préparer l'application pour Docker, gestion des variables d'environnement et externalisation des états. Livrable attendu : Proposer une architecture cloud-native adaptée au déploiement scalable avec séparation stateless et services externes.

expresscloudscalability+2
خبيرExpress.js

Sécurisation avancée contre attaques OWASP courantes

Contexte : Une API publique est exposée sur Internet et subit des tentatives d'attaque. Le Problème : La configuration actuelle n'intègre pas de protections suffisantes contre XSS, injection ou brute force. Contraintes : Utiliser helmet, validation stricte des entrées et rate limiting avancé. Livrable attendu : Mettre en place une stratégie complète de sécurisation protégeant l'application contre les principales vulnérabilités OWASP.

expresssecurityowasp+2

أسئلة أصلية من تصميم CodeDuel. لا ترتبط CodeDuel بأي ناشر أو هيئة اعتماد مذكورة؛ أسماء الشهادات والعلامات التجارية مملوكة لأصحابها، ولا تُذكر إلا للإشارة إلى المجال الذي يغطيه الاختبار. الإبلاغ عن محتوى

    Cas pratiques Express.js : 30 mises en situation | CodeDuel