fichier concerné : ./index.js
Il ne se charge QUE tu lancement du serveur. Même la création de l'application est externalisé dans un module. Cela respecte la SoC. On injecte l'application dans un serveur http.
fichier concerné : ./app/index.js
C'est le fichier centrale qui organise les différents module applicatifs.
Ce qui est référencé à l'intérieur :
- Les middleware d'interprétations de données entrantes (express.json() et express.urlencoded())
- le routeur
- Le middleware de 404
- Le middleware de gestion d'erreurs
fichier concerné : ./app/routers/index.js
C'est ici que l'on défini l'enchainement des middlewares devant répondre à une requête particulière. Si jamais aucune route de correspond à la demande, celle-ci terminera sa course dans le middleware de 404.
Pour chaque route défini:
- Authentification : Module externe .
- Validation de données : se charge de vérifier que les données (Joi & validation).
- ControllerHandler : se charge des
Try | catch
des controller ./app/helpers/controllerHandler.js - ControllerTemplate: Template d'un controller a remplir
fichier concerné : ./app/controllers/index.js
Son but est de :
- De récupérer les informations particulières envoyé par l'utilisateur dans la requête au serveur afin de potentiellment les utiliser ensuite.
- De récupérer des données brutes nécessaires pour répondre à la demande de l'utilisateur.
- Utiliser un service/couche métier afin d'appliquer une logique à notre réponse.
- Répondre à l'utilisateur dans un formalisme particulier. En JSON avec une structure prédéfini (par exemple l'ajout d'une enveloppe (propriété) "data" pour renvoyer les données de réponse en même temps qu'une potentielle erreur que l'on associerai dans une enveloppe "error.
fichier concerné : ./app/models/index.js
Le models sont des abstractions de données. C'est à dire que leur but est des livrer des données brutes de façon agnostique (qui n'a pas de lien direct avec une technique de stockage). Cela peut retrouné, par exemple des valeurs contenu dans un JSON ou dans une BDD.
Etendre la class des models avec coreDatamapper afin d'avoir acces aux methodes CRUD.
fichier concerné : ./app/services/cadex.js
C'est la vrai valeur ajouter de notre application c'est la seule partie qui est différente du application à une autre.
C'est ici que sont concentrés les mécanismes/fonctionnements "intellectuels".
Il n'y a pas vraiment de règle d'implémentation ici, cela varie d'un métier à l'autre.
Dans tous les cas cela récupère des données brutes en entrée, et renvoi des données calculés en sortie.
fichier concerné : ./app/helpers/controllerHandler.js
Il permet d'encapsuler (try | catch
) tous les controller de l'application, afin de capturer les potentielles erreurs qui pourrait intervenir lors de la réponse à une requête.
Ce gestionnaire capturera les erreurs qui sont apparu dans (les models, les services ou le controller lui-même).
Cette implémentation permet de gérer toujours les erreurs de la même façon en les renvoyer toujours au même endroit avec un next qui atterira dans un middleware de gestion d'erreurs.
fichier concerné : ./app/helpers/errorHandler.js
C'est ici que l'on va dispatcher la gestion des erreurs en fonction de leur type, afin de répondre dans un certain formalisme et en fournissant les détails de l'erreurs de façon clair et concises.
fichier concerné : ./app/helpers/logger.js
Il permet de définir où et comment sont affichés/stockés les messages d'erreurs potentiels de l'application. Ici ils sont stockés dans un/des fichiers de log pendant 1 jour.
Middleware qui se charge de l'affichage de la documentation de l'application.
Implémentation nos propres erreurs "errors".
Pour l'authentification utiliser JASON Web token [Tuto] (https://www.section.io/engineering-education/how-to-build-authentication-api-with-jwt-token-in-nodejs/)