API Node.js / Express pour une boutique e‑commerce, utilisant Sequelize avec SQLite comme base de données.
- Node.js (version 16+ recommandée)
- npm (fourni avec Node.js)
- SQLite installé sur votre machine
- Aller sur la page de téléchargement officielle : https://www.sqlite.org/download.html
- Dans la section Precompiled Binaries for Windows, télécharger :
sqlite-tools-win32-x86-*.zip(contient l’exécutablesqlite3.exe).
- Extraire l’archive dans un dossier, par exemple
C:\sqlite. - (Optionnel mais recommandé) Ajouter ce dossier au
PATHWindows :- Rechercher "Variables d’environnement" dans le menu Démarrer.
- Modifier la variable
Pathde votre utilisateur. - Ajouter
C:\sqlite.
- Vérifier dans un nouveau terminal PowerShell :
sqlite3 --versionSi une version s’affiche, SQLite est correctement installé.
Dans un terminal PowerShell, placer-vous dans le dossier du projet :
Installer les dépendances :
npm installLes principales dépendances sont :
express: framework HTTPsequelize: ORMsqlite3: driver base de données SQLiteswagger-ui-express: documentation APIjsonwebtoken,express-jwt,bcrypt: auth & sécurité
La configuration Sequelize/SQLite se trouve dans models/index.js (fichier existant dans ce projet). Par défaut, Sequelize crée un fichier de base de données SQLite (par ex. database.sqlite) dans le dossier du projet ou selon la configuration définie.
Aucune configuration complexe n’est requise pour démarrer : tout est piloté par Sequelize et sqlite3 déjà présent dans les dépendances.
Le script scripts/init-db.js permet de :
- créer les tables via Sequelize,
- créer le rôle admin,
- créer l’utilisateur admin par défaut,
- créer quelques catégories et produits de test.
Pour exécuter l’initialisation :
npm run init-dbCe script va :
- synchroniser le schéma dans la base SQLite,
- créer (si besoin) :
- rôle
admin, - utilisateur
admin@example.comavec le mot de passeadmin123, - catégories et produits de démonstration.
- rôle
Pour démarrer le serveur de développement (via nodemon) :
npm startL’API démarre alors par défaut sur le port 8080 :
- Racine de test :
http://localhost:8080/(retourne "Hello world !!") - Documentation Swagger :
http://localhost:8080/api-docs
Les routes d’API sont montées sous le préfixe /api dans main.js.
- L’API utilise JWT via le middleware
middlewares/auth.js. - Les routes sous
/apisont protégées par défaut. - Un utilisateur admin est créé par
npm run init-db:- Email :
admin@example.com - Mot de passe :
admin123
- Email :
Pour obtenir un token, utiliser le point d’entrée d’authentification défini dans les routes utilisateur (voir routes/user.js et la documentation Swagger dans swagger.json).
Une fois le token récupéré, l’envoyer dans l’en-tête Authorization :
Authorization: Bearer <votre_token_jwt>
main.js: point d’entrée de l’application (Express, middlewares, Swagger, routes).routes/index.js: montage des sous‑routes (produits, catégories, utilisateurs, etc.).controllers/*: logique métier des différentes entités.models/*: modèles Sequelize (User, Product, Category, etc.).
- Installer dépendances et SQLite (voir sections précédentes).
- Initialiser la base :
npm run init-db - Démarrer l’API :
npm start
- Ouvrir la doc :
http://localhost:8080/api-docs. - Se connecter avec l’utilisateur admin créé, récupérer un token JWT, puis appeler les routes
/api/...en ajoutant l’en-têteAuthorization.
sqlite3n’est pas reconnu :- Vérifier que le dossier contenant
sqlite3.exeest bien dans lePATH. - Ouvrir un nouveau terminal après modification du
PATH.
- Vérifier que le dossier contenant
- Erreur de connexion base / Sequelize :
- Vérifier le fichier
models/index.js(nom du fichier SQLite, emplacement, options Sequelize). - Vérifier que
npm installs’est bien terminé sans erreur.
- Vérifier le fichier
- Port déjà utilisé (8080) :
- Fermer l’application qui utilise déjà ce port,
- ou modifier la constante
portdansmain.js.