Skip to content

API REST CRUD développée avec Node.js, Express et MySQL. Projet vitrine montrant ma façon de travailler : code structuré (routes, contrôleurs, helpers), gestion centralisée des réponses JSON, configuration sécurisée via .env, et connexion à la base avec un utilisateur BDD dédié aux droits limités.

DBKDev/node-api-rest-crud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Node.js REST CRUD API (Express + MySQL)

Bienvenue sur mon projet d’API REST développé avec Node.js, Express et MySQL.
Ce projet est une démonstration de mes compétences backend et de ma rigueur de développement.

L’objectif n’était pas seulement de créer une API CRUD classique, mais aussi de :

  • Structurer le projet pour être clair et maintenable
  • Assurer la cohérence des réponses JSON (succès comme erreurs)
  • Mettre en place des pratiques de sécurité basiques (utilisateur MySQL limité, variables d’environnement)
  • Fournir un code qui puisse servir de base réutilisable

✨ Points forts du projet

  • 📂 Structure claire : séparation des routes, services, helpers, etc.
  • 📡 Réponses JSON uniformisées : chaque endpoint renvoie un format cohérent avec un code de succès/erreur et un message explicite.
  • 🔐 Sécurité :
    • Utilisation d’un utilisateur MySQL dédié aux droits minimaux
    • Stockage des informations sensibles dans un fichier .env (jamais versionné)
  • CRUD complet : gestion de bout en bout (Create, Read, Update, Delete) sur une ressource users.
  • 🛠️ Bonne pratique dev : helpers pour les réponses, organisation en modules, préparation pour des tests unitaires.

🛠️ Stack technique

  • Node.js – Backend runtime
  • Express – Framework minimaliste
  • MySQL – Base de données relationnelle
  • dotenv – Gestion des variables d’environnement

⚙️ Installation

1️⃣ Cloner le projet

git clone https://github.com/DBKDev/node-api-rest-crud.git
cd node-api-rest-crud

2️⃣ Installer les dépendances

npm install

3️⃣ Configurer les variables d’environnement

Créez un fichier .env à la racine du projet, basé sur .env.example :

PORT=3000
DB_HOST=localhost
DB_PORT=3306
DB_USER=user_dedie
DB_PASSWORD=mot_de_passe
DB_NAME=demo_api

4️⃣ Préparer la base de données

Importez le fichier schema.sql pour créer la structure (sans données sensibles) :

mysql -u user_dedie -p demo_api < schema.sql

5️⃣ Lancer le serveur

npm start

👉 Le serveur tourne par défaut sur http://localhost:3000.


📡 Endpoints disponibles

👤 Users

Méthode Endpoint Description
GET /users Récupère tous les users
GET /users Récupère un user précis
POST /users Crée un nouvel user
PATCH /users Modifie un user
DELETE /users/:id Supprime un user

📝 Posts

Méthode Endpoint Description
GET /posts Récupère tous les posts
GET /posts/:id Récupère un post précis
GET /posts/users/:userId Récupère tous les posts d’un user
POST /posts Crée un nouveau post
PATCH /posts Modifie un post
DELETE /posts/:id Supprime un post par son ID
DELETE /posts/users/:userId/posts Supprime tous les posts d’un user

💬 Comments

Méthode Endpoint Description
GET /comments Récupère tous les commentaires
GET /comments/:id Récupère un commentaire précis
PATCH /comments Modifie un commentaire
DELETE /comments/:id Supprime un commentaire

✅ Exemple de réponse

Succès

{
  "code": 200,
  "status": "success",  
  "message": "User retrieved successfully",
   "details": {
        "userId": "5"
    },
    "data": {
        "id": 5,
        "firstname": "Emma",
        "lastname": "Petit"
    }
}

Erreur

{
  "code": 400,
  "status": "error",
  "message": "Some required fields are missing",
  "details": {
        "errorCode": "VALIDATION_ERROR",
        "required": [
            "firstname",
            "lastname"
          ]
      },
  "data": null
}

👉 Chaque réponse contient un status, un code HTTP clair, et un message explicite, ce qui permet à un client (frontend, Postman, autre API) de comprendre rapidement le résultat.


📂 Organisation du projet

📦 node-api-rest-crud
├── 📂 helpers       → Fonctions utilitaires (réponses JSON, gestion des codes d’erreur/succès)
├── 📂 modules       → Logique métier (CRUD)
├── 📂 services      → Connexion BDD, requêtes SQL
├── app.js           → Point d’entrée de l’application
├── .env.example     → Variables d’environnement à adapter
└── package.json     → Dépendances & scripts

🔐 Sécurité & bonnes pratiques

  • ✅ Utilisation d’un utilisateur MySQL dédié avec permissions limitées (principe du moindre privilège).
  • ✅ Gestion des données sensibles via .env (non versionné dans Git).
  • ✅ Dump SQL (Apirestbdd.sql) ignoré dans Git pour éviter toute fuite.
  • ✅ Réponses JSON cohérentes avec codes d’erreur et de succès uniformisés.

🚀 Améliorations possibles

  • 📖 Ajouter une documentation
  • 🧩 Intégrer un middleware de validation (express-validator / zod)
  • 🧪 Écrire des tests unitaires avec Jest + Supertest
  • 🐳 Ajouter Docker pour faciliter le déploiement

📄 Licence

Ce projet est publié sous la licence MIT.

About

API REST CRUD développée avec Node.js, Express et MySQL. Projet vitrine montrant ma façon de travailler : code structuré (routes, contrôleurs, helpers), gestion centralisée des réponses JSON, configuration sécurisée via .env, et connexion à la base avec un utilisateur BDD dédié aux droits limités.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published