Service en ligne 100% Gratuit Utilitaires Web AngularForAll

Générateur API Node.js/Express CRUD

Express Js Nodejs Api Rest Crud Mongoose Jwt Backend

Générez une API REST Express complète avec routes CRUD, MongoDB/PostgreSQL/SQLite, validation Joi/Zod, middleware JWT, CORS, rate limiting et pagination en quelques clics.

Générateur d'API Express CRUD

📦 Modèle de données

🗄️ Base de données

🔒 Auth & Sécurité

Protège les routes avec jsonwebtoken

✅ Validation

⚙️ Options

{ success, data, message }

🚀 Serveur


                                
                            

Qu'est-ce qu'une API REST CRUD ?

Une API REST CRUD expose quatre opérations fondamentales sur une ressource via HTTP : Create, Read, Update, Delete. Express.js est le framework Node.js le plus utilisé pour construire ce type d'API, grâce à sa légèreté et sa flexibilité.

OpérationMéthode HTTPRouteDescription
CreatePOST/api/usersCréer une ressource
Read (liste)GET/api/usersLister toutes les ressources
Read (un)GET/api/users/:idRécupérer une ressource par ID
UpdatePUT/api/users/:idModifier une ressource
DeleteDELETE/api/users/:idSupprimer une ressource

Structure du projet

Une bonne organisation est la clé d'une API maintenable. Voici la structure recommandée :

my-api/
├── server.js          # Point d'entrée Express
├── routes/
│   └── users.js       # Routes CRUD du modèle
├── models/
│   └── User.js        # Schéma Mongoose (si MongoDB)
├── middleware/
│   └── auth.js        # Middleware JWT
├── .env               # Variables d'environnement
└── package.json
Convention : chaque ressource possède son propre fichier de routes dans routes/. Le server.js ne fait que les monter via app.use().

Les routes CRUD expliquées

Voici le détail de chaque route avec les bonnes pratiques :

const router = require('express').Router();

// GET /api/users — liste paginée
router.get('/', async (req, res) => {
    const page  = parseInt(req.query.page)  || 1;
    const limit = parseInt(req.query.limit) || 10;
    // ...
});

// GET /api/users/:id — un utilisateur
router.get('/:id', async (req, res) => {
    // Valider que req.params.id est un ObjectId valide
    // Retourner 404 si non trouvé
});

// POST /api/users — créer
router.post('/', async (req, res) => {
    // Valider req.body avant insertion
    // Retourner 201 Created avec la ressource créée
});

// PUT /api/users/:id — modifier
router.put('/:id', async (req, res) => {
    // Retourner 404 si non trouvé, 200 avec la ressource modifiée
});

// DELETE /api/users/:id — supprimer
router.delete('/:id', async (req, res) => {
    // Retourner 404 si non trouvé, 200 ou 204
});

Intégration base de données

Le générateur supporte plusieurs ORM et drivers. Voici la connexion MongoDB avec Mongoose :

// server.js
const mongoose = require('mongoose');

mongoose.connect(process.env.MONGODB_URI)
    .then(() => console.log('✅ MongoDB connecté'))
    .catch(err => {
        console.error('❌ Erreur MongoDB:', err.message);
        process.exit(1);
    });

// models/User.js
const userSchema = new mongoose.Schema({
    name:  { type: String, required: true, trim: true },
    email: { type: String, required: true, unique: true, lowercase: true },
    age:   { type: Number, min: 0 }
}, { timestamps: true }); // createdAt + updatedAt auto

module.exports = mongoose.model('User', userSchema);
Prisma : si vous utilisez Prisma, le schéma est défini dans prisma/schema.prisma et les migrations se font via npx prisma migrate dev.

Authentification JWT

Le middleware JWT vérifie le token dans l'en-tête Authorization: Bearer <token> :

// middleware/auth.js
const jwt = require('jsonwebtoken');

module.exports = function authMiddleware(req, res, next) {
    const header = req.headers['authorization'];
    if (!header || !header.startsWith('Bearer ')) {
        return res.status(401).json({ success: false, message: 'Token manquant' });
    }
    const token = header.split(' ')[1];
    try {
        req.user = jwt.verify(token, process.env.JWT_SECRET);
        next();
    } catch (err) {
        res.status(403).json({ success: false, message: 'Token invalide' });
    }
};

Bonnes pratiques

  • Toujours valider les entrées avec Joi ou Zod avant de toucher la base de données
  • Utiliser des codes HTTP sémantiques : 201 pour CREATE, 404 pour NOT FOUND, 422 pour validation
  • Ne jamais exposer les stack traces en production — logger l'erreur serveur, retourner un message générique
  • Paginer toutes les listes — une requête sans limite peut renvoyer des millions de lignes
  • Versionner l'API : /api/v1/users pour évoluer sans casser les clients
  • Activer CORS de manière restrictive : n'autoriser que les origines connues
  • Stocker les secrets dans .env — jamais dans le code source
Package.json minimal : npm install express mongoose dotenv cors morgan jsonwebtoken

Questions fréquentes

Renseignez le nom de votre ressource (ex: "products"), choisissez la base de donnees (MongoDB/Mongoose, PostgreSQL, MySQL), activez les options souhaitees (validation, authentification JWT, middleware CORS) et cliquez sur Generer. L'outil produit le code complet routes, controllers et models pret a copier.

Le generateur supporte MongoDB avec Mongoose (ODM), PostgreSQL avec pg ou Prisma, MySQL avec mysql2 ou Sequelize, et SQLite. Chaque option genere le code adapte au client de base de donnees choisi avec la gestion des connexions, les schemas/modeles et les requetes CRUD correspondantes.

En activant les options correspondantes, le generateur ajoute la validation avec express-validator ou Joi, l'authentification JWT avec jsonwebtoken et express-jwt, le middleware CORS configurable et la gestion centralisee des erreurs. Ces elements sont essentiels pour une API production-ready.

Le code genere suit une architecture MVC separee : routes/ (definition des endpoints), controllers/ (logique metier), models/ (schemas de donnees) et middleware/ (validation, auth). Cette structure est scalable et facilement testable avec Jest ou Mocha pour les tests unitaires et d'integration.

Partager