Create Nodejs REST API in Javascript
Table of Contents
Voici mon CLI que je me suis construit afin de m'aider à créer des API en Nodejs rapidement et facilement.
J'ai conçu ce CLI à l'aide de l'expérience que j'ai accumulé au travers des différents projets que j'ai réalisé. Ce CLI est en constante évolution et chaque nouvelles connaissances que j'acquére vient l'enrichire petit à petit.
Ce projet n'a pas pour vocation à devenir un gros framework comme on peut en voir de nos jours. C'est un outils personnel avant tout qui se base sur mes habitudes de développement et ma conception d'une architecture REST API.
Je suis ouvert à toute critique constructive et vous êtes libre d'utiliser cet outils et de l'améliorer comme bon vous semble. Cependant, si vous venez de débuter dans la conception d'API REST avec nodejs, je vous déconseil de vous servir de cet outils. En effet, il n'est pas encore terminé et il ne répondra surement pas automatiquement à certaines situations que vous rencontrerais. Si vous cherchez un framework nodejs, je vous conseil l'excellent Nestjs que j'utilise également pour d'autres projets.
L'API REST créer avec autonode-cli utilisera une base de donnée MySQL. Une future version permettra de générer une API REST utilisant MongoDB
Cette API REST est basé sur une architecture MVC
Voici comment se découpe le corps de l'API REST :
File / Directory | Type | Description |
---|---|---|
/.env |
file |
Contient les variables d'environnement |
/.eslintrc.json |
file |
Configuration de eslint |
/.gitignore |
file |
Les fichiers lors de vos push à git |
/package.json |
file |
Contient les paramètres du projet |
/server.js |
file |
Point d'entrée de l'API REST |
/public |
Directory |
Contient les fichiers uploader |
/node_modules |
Directory |
Contient tout les modules installé |
/app |
Directory |
Contient tout le corps du projet |
/app/auth |
Directory |
Contient toute la logique pour l'authentification |
/app/config |
Directory |
Contient le fichier de config pour la base de donnée et pour les logs |
/app/controllers |
Directory |
Contient les controlleurs du projet |
/app/helpers |
Directory |
Contient les helpers du projet |
/app/logs |
Directory |
Contient les logs du projet |
/app/middlewares |
Directory |
Contient les middlewares du projet |
/app/models |
Directory |
Contient les models du projet |
/app/routes |
Directory |
Contient les routes du projet |
/app/services |
Directory |
Contient les services du projet |
/app/utiles |
Directory |
Contient les utiles du projet |
Listes des dépendences utilisée :
Vous devez avoir installé nodejs sur votre ordinateur :
- Node >= 10.0.0
npm i autonode-cli -g
Pour créer un nouveau projet, il vous suffit d'entrer la commande :
autonode create mon-projet
Cela va vous créer le projet et installer toutes les dépendences nécessaires
Une fois toute les dépendences installé, vous pouvez directement créer votre base de donnée avec cette commande :
autonode db init nom-db
Si vous utilisez une base de donnée existante, il vous suffit d'aller dans le fichier .env à la racine de votre projet et de dé-commenter le SQL_DATABASE et d'y ajouter le nom de votre base de donnée SQL ```sh SQL_DATABASE= bdd-test ```
Pour créer une nouvealle entité, il vous suffit d'entrer la commande
autonode entity mon-entité
Cela va vous créer un fichier route, controller et model dans leurs dossiers respectif
Le fichier app/routes/router.js va aussi se mettre à jour en ajoutant le chemin vers le fichier route qui vient de se créer
Le fichier model va être créer mais il faudra bien sûr définir les propriétés de votre entité dans le constructeur et créer l'entité en DB. Autonode CLI ne gère pas encore le code first !
Pour créer une nouvealle entité pour l'upload de fichier, il vous suffit d'entrer la commande
autonode entity file
Cela va vous créer un fichier route et controller dans leurs dossiers respectif
Le systeme n'est pas que pour des utilisateurs n'ayant qu'un seul rôle, à vous de le modifier en fonction de vos préférences
Pour créer un système d'authentification, il vous suffit d'entrer la commande
autonode entity auth
Cela va vous créer un fichier route, controller, model dans le dossier auth + un fichier middleware dans le dossier middlewares
Vous pouvez également créer une table Users dans votre database avec la commande
autonode db entity auth
Le auth.controller contient une fonction pour l'authentification qui include l'utilisation d'un access token ainsi que celui d'un refresh token. Si vous le désirez, vous pouvez enlever l'utilisation du refresh token en commentent ou en suppriment les lignes 18 et 19
// const refreskToken = jwt.sign(authJson, process.env.REFRESH_TOKEN_SECRET);
// await Auth.updateRefresh(refreskToken, req.body.email);
Il est fortement conseiller de changer votre access secret ainsi que votre refresh secret dans le fichier .env
Turchini Axel - Linkedin - turchini.axel@gmail.com
Project Link: https://github.com/Magictruks/auto_nodejs