Criar servidor HTTP com Node.js do zero
iniciar seu primeiro projeto em Node.js, entender os principais módulos e aprender os fundamentos para levantar seu servidor HTTP com JavaScript puro.
Por que isso é importante
Criar servidor HTTP Node.js do zero: ESM ("type":"module") + import http from 'node:http' → createServer → listen. Entenda req/res e status codes antes de pular para Express/Fastify.
Leitura relacionada: curso de Node.js · instalação e fundamentos de Node.js · como criar API REST com Node.js · tipos de filas no RabbitMQ · Clean Vertical Sliced Architecture.
Entendendo o Ambiente do Node.js
Node.js roda JavaScript fora do browser com módulos nativos (http, fs, path). Antes do framework: versão LTS (node -v), um arquivo server e o ciclo req → res.
Dica
Aproveite os módulos já inclusos no Node.js para acelerar o desenvolvimento sem
depender de bibliotecas externas, principalmente nos primeiros projetos.
Criando a Estrutura Inicial do Projeto
Estrutura mínima: pasta do projeto + package.json com "type": "module" + server.js (ou server.mjs). Um arquivo basta para o primeiro listen.
Atenção
Sempre verifique se o Node.js está instalado corretamente antes de começar. Use o
comando node -v para conferir a versão instalada.
Importar módulos: ESM com node: (2026)
Em 2026, importe built-ins com ESM e prefixo node: — ex.: import http from 'node:http'. require() (CommonJS) ainda existe; não misture os dois no mesmo arquivo sem bridge.
Atenção
Utilize sempre os módulos nativos quando possível para garantir máxima performance e
facilidade de manutenção.
Caminho ESM-first (pule o CommonJS-first)
Em 2026, comece ESM-first: no package.json use "type": "module" e importe com import http from 'node:http' (prefixo node: deixa explícito que é built-in). Tutorials CommonJS-first (require) ainda funcionam, mas atrasam quem vai misturar com TypeScript/bundlers modernos — não precisamos de guerra de comprimento com DigitalOcean/Alura; só do caminho certo no primeiro arquivo.
ESM
Se o restante do artigo ainda mostra require em screenshots antigos, trate como legado visual — o lab abaixo e projetos novos usam import.
Módulos Essenciais do Node
O Node oferece módulos essenciais que cobrem a maioria das necessidades iniciais do
desenvolvimento backend:
Módulo node:http: o núcleo do servidor
node:http é o núcleo: createServer(handler) recebe (req, res). Dali saem status, headers e body — Express só empacota isso depois.
Utilizando a Função createServer
O coração do servidor Node.js é a função createServer , disponibilizada
pelo módulo http. Com ela, você define como o servidor responde às requisições feitas
pelo navegador ou qualquer cliente HTTP.
Atenção ao código
Ao usar createServer , lembre-se de definir um handler para lidar com
as requisições e enviar respostas adequadas.
Passo a passo: createServer + listen
- Passo 1: Crie um arquivo chamado server.js em
seu projeto. - Passo 2: Importe o módulo http usando const http = require('http') .
- Passo 3: Utilize http.createServer() e defina
um callback para tratar as requisições recebidas. - Passo 4: Chame o método listen para fazer o
servidor escutar uma porta específica, como 3000.
Dica extra
Ao acessar localhost:3000 no navegador, você já verá a resposta enviada pelo
seu próprio servidor Node!
Mini lab: GET/POST e status codes
Mini lab (http nativo, sem Express): no handler, leia req.method e req.url.
- GET /health → 200 + {"ok":true}.
- POST /echo → leia o body; se JSON válido, 201 + eco; se body vazio/inválido, 400.
- Qualquer outra rota → 404 + {"error":"not_found"}.
- Sempre setHeader Content-Type application/json.
Quando cansar de switch manual, suba para framework no curso-nodejs — o ponto aqui é status codes e o ciclo request/response.
Como o Navegador se Conecta ao Servidor
Quando seu servidor está em execução, o navegador funciona como um cliente e envia
requisições para o endereço local e porta definidos. O Node responde a cada solicitação
através do callback cadastrado no createServer , enviando textos,
arquivos ou qualquer conteúdo.
Comparando Módulos Nativos e de Terceiros
Módulos Nativos do Node.js
Disponíveis por padrão, sem necessidade de instalação adicional, cobrem a maioria dos cenários iniciais.
+ Prós
- • Velocidade
- • Baixo overhead
- • Documentação oficial
− Contras
- • Menos funcionalidades avançadas
- • Mais código manual
Módulos de Terceiros (como Express)
Bibliotecas externas podem simplificar tarefas repetitivas e adicionar abstrações prontas.
+ Prós
- • Facilidade de uso
- • Funções específicas prontas
- • Comunidade ampla
− Contras
- • Maior dependência externa
- • Pode aumentar tamanho do projeto
Erros comuns ao começar no Node.js
Erro típico
Tentar rodar server.js sem Node instalado gerará um erro de comando
não encontrado. Instale o Node.js primeiro e reinicie o terminal.
Atenção com portas
Escolher uma porta já usada por outro processo impedirá seu servidor de rodar. Use
portas como 3000, 4000 ou maiores para evitar conflitos.
Info
Sempre pare o servidor com Ctrl+C no terminal antes de rodar
novamente, evitando múltiplos processos travando a porta.
Próximos passos: frameworks e o curso Node
Após o primeiro servidor online, explore a leitura e escrita de arquivos com fs , experimente gerar hashes com crypto e, depois,
avance para frameworks como Express para facilitar rotas e middlewares.
Fontes
Revisão em agosto de 2026. APIs nativas (http, fs, etc.) seguem a versão do Node instalada — confira LTS atual com node -v e a docs oficial. Tutorial introdutório, não guia de produção completo.
Node.js — HTTP. Node.js — File system. Node.js — Download / LTS.
Perguntas frequentes
Como criar um servidor HTTP com Node.js?
Importe node:http, use createServer para ler req/res, responda com writeHead/end e chame listen na porta. Depois evolua roteamento e frameworks.
Preciso de Express para um servidor HTTP?
Não no primeiro passo. Aprender o módulo http mostra request/response de verdade; Express/Fastify entram quando o boilerplate de rotas incomoda.
Quais módulos básicos do Node estudar primeiro?
http, fs, path, url e events cobrem o essencial antes de frameworks. Domine require/import e ESM (node:http) no caminho 2026.
Como escutar uma porta com createServer?
Após createServer, chame server.listen(porta, callback). Confirme a porta livre, teste com curl e encerre com Ctrl+C no terminal.
Continue explorando
Perguntas frequentes
Como criar um servidor HTTP com Node.js?
Importe node:http, use createServer para ler req/res, responda com writeHead/end e chame listen na porta. Depois evolua roteamento e frameworks.
Preciso de Express para um servidor HTTP?
Não no primeiro passo. Aprender o módulo http mostra request/response de verdade; Express/Fastify entram quando o boilerplate de rotas incomoda.
Quais módulos básicos do Node estudar primeiro?
http, fs, path, url e events cobrem o essencial antes de frameworks. Domine require/import e ESM (node:http) no caminho 2026.
Como escutar uma porta com createServer?
Após createServer, chame server.listen(porta, callback). Confirme a porta livre, teste com curl e encerre com Ctrl+C no terminal.
Como o Navegador se Conecta ao Servidor
Quando seu servidor está em execução, o navegador funciona como um cliente e envia requisições para o endereço local e porta definidos. O Node responde a cada solicitação através do callback cadastrado no createServer , enviando textos, arquivos ou qualquer conteúdo.