AULA 46
MÓDULO 6
backend Node.js
⏱ 50 min
Express: por Baixo do Capô
Middleware stack: como Express encadeia funções. Middleware de aplicação, rota e erro. Morgan. Criar middleware personalizado.
ExpressmiddlewarenextstackmorganerrorHandlercors
Express: por baixo do capô
Express é um framework minimalista — basicamente um roteador sofisticado sobre o módulo http. Seu poder está no sistema de middleware stack: funções encadeadas que processam req/res.
middleware stack
app.use(m1).use(m2).use(m3) cria uma pilha. Cada request passa por cada middleware em ordem. Cada middleware decide se passa para o próximo (next()) ou termina a cadeia.Request → [cors] → [helmet] → [json parser] → [auth] → [rate limit] → [router] → Response
Tipos de middleware
Middlewares podem ser de aplicação (app.use), de rota (router.use), de erro (4 params), ou de terceiros (cors, helmet, morgan).
morgan — logging HTTP
app.use(morgan('dev')) loga todas as requisições: método, URL, status, tempo. Essencial para debug e monitoramento.
javascript
// Middleware personalizado — logging + timing const requestLogger = (req, res, next) => { const start = Date.now() res.on('finish', () => { console.log(`${req.method} ${req.url} ${res.statusCode} +${Date.now()-start}ms`) }) next() } // Middleware que termina a cadeia sem next() const checkApiKey = (req, res, next) => { if (req.headers['x-api-key'] !== process.env.API_KEY) { return res.status(401).json({ error: 'API key inválida' }) // sem next() — cadeia encerrada aqui } next() // passa para o próximo } // Middleware de erro — 4 parâmetros const errorHandler = (err, req, res, next) => { console.error(err.stack) res.status(err.statusCode || 500).json({ error: err.message || 'Erro interno' }) } app.use(requestLogger) app.use('/api', checkApiKey) app.use(errorHandler) // sempre por último
quiz · aula 46
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
O que acontece se um middleware não chama next() e não envia resposta?
QUESTÃO 02
Qual é a assinatura de um middleware de erro no Express?
QUESTÃO 03
Em que ordem os middlewares executam?
0/3