Bien démarrer son API REST en NodeJs : Structure de dossiers propre

Créer une API REST en NodeJs n’est pas très compliqué. On peut rapidement mettre en place notre serveur et appeler notre première route. Mais avant toute chose, il est important de respecter une structure de dossiers qui vous permettra sans nul doute de développer une meilleure applications, et vous poussera à respecter ces quelques concepts essentiels :

  • Utiliser une architecture à 3 couches.
  • Isoler votre logique métier
  • Utiliser l’injection de dépendance
  • Diviser vos fichiers de manière concis et testable

Et croyez-moi, lorsque l’on définit en amont une architecture minimale des dossiers, cela nous pousse à honorer ces principes car en cas de non respect, on va vite se dire : « tiens, ce fichier ici ça fait bizarre ».

Ma structure minimale recommandée :

Après plusieurs recherches, plusieurs tests et quelques gros projets en NodeJS, je me suis mise à garder à ce template minimal pour chaque début de projet. Bien évidemment, plus l’application grossit, plus les dossiers et sous-dossiers peuvent se créer à votre convenance. Mais tout en respectant cela :

src
│   app.js                  
└───api             
└───config    
└───eventshandlers     
└───jobs             
└───loaders        
└───models       
└───services     
└───tests            
└───types          

Un peu d’explication :

app.js : Ici ce sont les points d’entrée. Tous les appels qui vont nous permettre d’initialiser notre application.

api : Ce dossier va contenir toutes les routes de Express pour tous nos controlleurs.

config : Ce dossier contiendra nos variables d’environnements pour nos différentes configurations (exemple : les appels au .env.dev pour le developpement, le .env pour la production etc.)

eventshandlers : tous les évènements à écouter de votre application.

jobs : Toutes les définitions de nos tâches récurrentes (cron, agendajs etc).

loaders : Ce dossier contient tous nos modules de démarrage (cf Mon article sur les loaders Express et MongoDb. )

models : tous les fichiers inhérents à la structure de la base de données, les modèles de classe.

services : ici, nous y trouverons tous nos services, qui contiennent la logique métier d

e notre application.

tests : l’ensemble des tests unitaires.

types : definition de types uniquement si vous utilisez typescript

N’hésitez pas à me partager vos templates également ! Je serai curieuse de savoir lesquels vous adoptez pour améliorer le mien !

Vous aimerez aussi...