Leodario.com

Leodario.com – Tudo sobre Tecnologia

Aula 32 – API JavaScript, Node.js e Express – Custom Middleware – Criando seus próprios middlewares

Imagem destacada da aula de API

Introdução (3 min)

Imagine um porteiro em um prédio. Ele verifica a identidade de todos que entram, decide quem pode passar e para onde devem ir. Em uma API, o middleware funciona de forma semelhante: intercepta as requisições antes que cheguem à sua lógica principal, permitindo executar ações importantes como autenticação, logging e validação.

Criar middlewares customizados é essencial para APIs modernas, pois possibilita adaptar o comportamento do servidor às suas necessidades específicas. Nesta aula, você aprenderá a construir seus próprios middlewares com Node.js e Express, implementando um middleware de logging que registra informações importantes de cada requisição.

No ecossistema Node.js/Express, os middlewares são a base para construir APIs robustas e flexíveis, adicionando funcionalidades transversais sem replicar código em diferentes rotas.

Conceito Fundamental (7 min)

Um middleware é uma função que recebe três parâmetros: a requisição (req), a resposta (res) e a próxima função na cadeia (next). Ele pode modificar a requisição e a resposta, ou passar o controle para o próximo middleware chamando next(). A ordem em que os middlewares são declarados define a ordem de execução.

Na indústria, middlewares são amplamente usados para autenticação, autorização, tratamento de erros, logging, compressão de dados e muito mais. Eles se integram perfeitamente com outras tecnologias, como bancos de dados, serviços de cache e provedores de identidade.

Uma das principais vantagens dos middlewares é a reutilização de código e a organização da aplicação. Por outro lado, um excesso de middlewares pode impactar negativamente o desempenho, tornando a depuração mais complexa.

Implementação Prática (10 min)

const express = require('express');
const app = express();

// Middleware de logging customizado const meuLogger = (req, res, next) => { const data = new Date(); console.log([${data.toISOString()}] ${req.method} ${req.url}); next(); // Passa o controle para o próximo middleware };

// Aplica o middleware a todas as rotas app.use(meuLogger);

// Rota de exemplo app.get('/', (req, res) => { res.send('Olá, Mundo!'); });

// Tratamento de erros genérico app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Algo deu errado!'); });

// Inicia o servidor na porta 3000 (compatível com HostGator Plano M) const port = process.env.PORT || 3000; app.listen(port, () => { console.log(Servidor rodando na porta ${port}); });

Este código demonstra um middleware de logging simples que registra a data, o método HTTP e a URL de cada requisição. A função next() é crucial para garantir que a requisição continue sendo processada. O tratamento de erros genérico garante a captura de exceções não tratadas, seguindo as melhores práticas enterprise.

Para HostGator Plano M, a configuração da porta utiliza process.env.PORT || 3000, garantindo compatibilidade com a plataforma.

Exercício Hands-On (5 min)

Desafio: Modifique o middleware de logging para registrar também o endereço IP do cliente (req.ip).

Solução:

const meuLogger = (req, res, next) => {
  const data = new Date();
  console.log([${data.toISOString()}] ${req.method} ${req.url} - IP: ${req.ip});
  next();
};

Teste: Faça uma requisição para sua API e verifique o console. Você verá o endereço IP registrado junto com as outras informações.

Troubleshooting: Se o endereço IP não aparecer, verifique se você está atrás de um proxy ou balanceador de carga. Nestes casos, o endereço IP real pode estar em um cabeçalho diferente, como x-forwarded-for.

Próximos Passos: Explore outros tipos de middlewares, como autenticação com JWT, validação de dados com Joi e tratamento de CORS.

🚀 Pronto para a próxima aula?

Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!

📚 Ver todas as aulas