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.
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 |
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"));
}
}
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");
}
}
routes
ts
CopierModifier
// routes/resource.routes.ts
router.post("/", authMiddleware.verifyToken, resourceController.create);
Ajoutez restrictToAdmin
si nécessaire.
zod