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