Cadeia de Middlewares no Express
Auth, rate limit, validação
Nota de preparação para a N-iX — camada HTTP do backend.
Resumo: a ordem importa. Estruturo do mais amplo / mais barato para o mais específico / mais caro.
Ordem correta
- Logging / Request ID – adiciona
req.idpara tracing. - CORS / Helmet – headers de segurança primeiro.
- Body parsers –
express.json(),express.urlencoded(). - Rate limiter –
express-rate-limitpor IP ou user ID. - Autenticação – valida o token JWT / OAuth. Bloqueia cedo se inválido.
- Autorização – checa permissões (ex.:
req.user.role === 'admin'). - Validação –
Joi/zodpara validar body/query da requisição. - Route handler – a lógica de negócio em si.
- Error handler – captura todos os erros e responde o status HTTP adequado.
app.use(logger);
app.use(helmet());
app.use(cors());
app.use(express.json());
app.use(rateLimiter);
app.use(authMiddleware);
app.use(authorizationMiddleware);
app.use(validateRequest);
app.use("/api/orders", orderRoutes);
app.use(errorHandler);
Por que esta ordem
- Rate limiting antes da auth evita gastar CPU com tokens inválidos.
- Auth antes da validação evita validar requisições de usuários não autenticados.
- O error handler vem por último para capturar qualquer erro lançado.
Nota do mundo real: também adiciono circuit breakers em chamadas a APIs externas dentro do route handler para evitar falhas em cascata.
Relacionadas: Node.js sob alta concorrência · índice.