🛠️ Guide Général – Ajouter une Nouvelle Route à l’API (Express + TypeScript)

Ce guide explique comment ajouter proprement une nouvelle route à votre API REST avec Express, TypeScript, Prisma, et Zod. Il s’applique à n’importe quelle ressource : users, teams, activities, etc.


✅ Étapes à suivre


1. 🔍 Définir la route

Avant d’écrire du code, posez-vous les bonnes questions :

Élément Exemple
Type d’action Lire, créer, modifier, supprimer
Ressource User, Team, Activity, etc.
Verbe HTTP GET, POST, PUT, DELETE
URL attendue /api/resource/:id
Données entrantes params, query, body
Accès requis ? Public / Authentifié / Admin

2. 📦 Ajouter la méthode dans le contrôleur

ts
CopierModifier
// controllers/resource.controller.ts
async create(req: Request, res: Response, next: NextFunction) {
  try {
    const validatedData = schema.parse(req.body);
    const result = await resourceService.create(validatedData);
    res.status(201).json(successResponse(result));
  } catch (error) {
    if (error instanceof z.ZodError) {
      return next(new AppError("Validation échouée", 400, "VALIDATION_ERROR"));
    }
    next(new AppError("Erreur interne", 500, "INTERNAL_ERROR"));
  }
}


3. 🧠 Implémenter la logique dans le service

ts
CopierModifier
// services/resource.service.ts
async create(data: CreateResourceInput): Promise<Resource> {
  try {
    return await db.resource.create({ data });
  } catch (error) {
    throw new AppError("Erreur base de données", 500, "DB_ERROR");
  }
}


4. 🧩 Déclarer la route dans le fichier routes

ts
CopierModifier
// routes/resource.routes.ts
router.post("/", authMiddleware.verifyToken, resourceController.create);

Ajoutez restrictToAdmin si nécessaire.


5. 🛡️ Valider les données avec zod