Skip to content

Un kit de développement dockerisé d'une application web Node.js/Express.js pour développer une web API RESTful (à but pédagogique)

Notifications You must be signed in to change notification settings

paul-schuhm/starterpack-api-nodejs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Starter pack: RESTful web API avec Node.js, Express.js, MySQL et Adminer

Un starter pack dockerisé d'une application web node.js pour développer une web API RESTful. L'API vient avec un service de base de données relationnelles (MySQL) et un client graphique (Adminer).

Prérequis

N'oubliez pas de supprimer le dossier .git si vous désirez créer votre propre dépôt à partir des sources

rm -R .git
git init

Lancer le projet

  1. Dupliquer le fichier .env.dist :
cp .env.dist .env

Vous pouvez modifier les variables d'environnement si vous le souhaitez (des valeurs par défaut sont fournies)

  1. Démarrer le projet :
docker compose watch

Les sources JavaScript sont watchées, l'application Node redémarre à chaque édition des sources.

Arrêter le projet

docker compose down

Tester

Se rendre à l'URL localhost:5001, ou avec curl :

curl -i localhost:5001

Vous devriez voir une page HTML qui affiche des données issues de la base de données MySQL.

Attendez quelques secondes que le serveur MySQL soit prêt à accepter des requêtes.

La base de données MySQL

Penser à modifier la valeur du port si vous l'avez changé dans le .env

La base de données vient avec deux utilisateurs :

  • root (administrateur), mot de passe : root
  • user (utilisateur lambda), mot de passe : password

Accéder à la base de données

avec Adminer

Le projet vient avec Adminer, un gestionnaire de base de données avec interface graphique, simple et puissant.

Se rendre sur l'URL http://localhost:5003 (par défaut) et se connecter avec les credentials root ou user.

avec le client mysql depuis votre machine hôte

mysql -uroot -proot -Dmydb -h127.0.0.1 -P5002

Machine hôte : la machine sur laquelle s’exécute les conteneurs Docker, votre machine

Puis, dans le repl MySQL (session ouverte avec la commande précédente)

-- Lister les utilisateurs MySQL
SELECT user FROM mysql.user;
-- Lister les users dans la base de départ
SELECT * FROM User;

Préférer utiliser l'adresse IP 127.0.0.1 plutôt que son alias localhost afin éviter des potentiels conflits de configuration avec le fichier socket du serveur MySQL potentiellement installé sur votre machine hôte.

depuis un autre conteneur

Le nom de l'hôte est db, le nom du service sur le réseau Docker.

Génération de la documentation OpenAPI avec swagger

(Re)générer la documentation interactive de votre API avec le module swagger-autogen (déjà installé):

docker exec -it demo-rest-api-api npm run swagger-autogen

Se rendre à l'URL /doc pour accéder à Swagger UI et à la documentation interactive de votre API.

Installer de nouvelles dépendances, inspecter les dépendances

Vous pouvez installer de nouvelles dépendances au besoin. À la racine de l'application, installer les dépendances désirées via npm:

docker exec -it demo-rest-api-api npm install <le nom du paquet>

ou directement sur la machine hôte (changements seront repercutés par le watch des sources):

npm install <le nom du paquet>

Lister les dépendances du projet Node:

docker exec -it demo-rest-api-api npm list

Conseils pour le développement

  • Débuger : Inspecter les logs du conteneur Docker (docker logs -f demo-rest-api-api, ou via Docker Desktop ou via l'extension officielle Docker) qui contiennent tout ce qui est écrit sur la sortie standard (avec console.log()). Les sources de l'application Node.js sont watchées, donc à chaque modification d'un fichier source l'application redémarre pour les prendre en compte automatiquement ;
  • Ouvrez une connexion MySQL pendant votre développement pour tester vos requêtes avant de les intégrer dans votre code;
  • Utiliser cURL pour tester rapidement vos requêtes HTTP.
  • Ouvrez deux terminaux: l'un avec cURL et l'autre avec les logs de l'API pour débuger facilement votre système;
  • Installer le module dotenv pour placer le DSN (informations de connexion à la base) en dehors du code;
  • Pour tester des enchaînements de requêtes, écrivez un script SQL pour remettre la base dans un état initial et contenant les requêtes à tester, un script pour effectuer les requêtes HTTP avec cURL, et exécuter le tout en une commande (en vous servant de l'opérateur du shell &&).

Modules Node.js installés

Ressources

Docker

Express

Spécification OpenAPI et suite d'outils Swagger

SGBDR et ORM

Adminer

About

Un kit de développement dockerisé d'une application web Node.js/Express.js pour développer une web API RESTful (à but pédagogique)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Contributors 2

  •  
  •