No capítulo anterior você criou servidores com o módulo http do Node. Funcionou — mas observe o que acontece quando o sistema começa a crescer:
import http from 'http';
const servidor = http.createServer((req, res) => {
if (req.url === '/' && req.method === 'GET') {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('<h1>Página inicial</h1>');
}
else if (req.url === '/usuarios' && req.method === 'GET') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify([]));
}
else if (req.url === '/usuarios' && req.method === 'POST') {
// precisaria ler o body manualmente...
}
else if (req.url === '/produtos' && req.method === 'GET') {
// mais um if...
}
else {
res.writeHead(404);
res.end('Não encontrado');
}
});
Com 5 rotas já fica difícil. Com 20 rotas, é um pesadelo.
O Express é um framework criado para organizar exatamente isso.
Pense assim:
| Node.js puro | Express |
|---|---|
| Kit de ferramentas bruto | Oficina organizada |
| Você monta tudo na mão | Estrutura pronta para usar |
| if/else para cada rota | app.get(), app.post()... |
| Ler body manualmente | req.body pronto |
| Servir arquivos manualmente | express.static() |
O Express não substitui o Node — ele roda em cima do Node e organiza o trabalho.
Principais motivos são:
mkdir meu-servidor
cd meu-servidor
npm init -y
npm install express pg
No package.json adicione "type": "module":
{
"name": "meu-servidor",
"version": "1.0.0",
"type": "module",
"dependencies": {
"express": "^4.x.x",
"pg": "^8.x.x"
}
}