TypeScript
DevOps
Node.js
Architecturer une API REST de production
Validation, erreurs, rate limiting, logging : les patterns essentiels pour des API routes Next.js fiables et maintenables.
Emmanuel Mulonda Johannes19 juin 202611 min de lecture
Architecturer une API REST de production
La validation avant tout
Tout input non validé est une porte ouverte. Avec Zod :
const schema = z.object({
email: z.string().email(),
title: z.string().min(3).max(120),
});
const parsed = schema.safeParse(body);
if (!parsed.success) return NextResponse.json({ error: parsed.error.flatten() }, { status: 400 });
Un gestionnaire d'erreurs centralisé
export function handleError(e: unknown) {
if (e instanceof Prisma.PrismaClientKnownRequestError) {
if (e.code === "P2002") return NextResponse.json({ error: "Doublon détecté" }, { status: 409 });
}
return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
}
Rate limiting
Protégez vos endpoints publics avec un middleware de quota (fenêtre glissante en mémoire ou Redis).
Logging structuré
Loggez la méthode, le path, le statut, la durée et l'identifiant utilisateur. Vos logs sont votre première source de vérité en incident.
À retenir : une bonne API n'est pas celle qui gère le cas nominal, mais celle qui échoue proprement et de façon prévisible.
TypeScript
DevOps
Node.js