Pular para o conteúdo
Node.js

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'createServerlisten. Entenda req/res e status codes antes de pular para Express/Fastify.

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

  1. Passo 1: Crie um arquivo chamado server.js em
    seu projeto.
  2. Passo 2: Importe o módulo http usando const http = require('http') .
  3. Passo 3: Utilize http.createServer() e defina
    um callback para tratar as requisições recebidas.
  4. 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.

  1. GET /health → 200 + {"ok":true}.
  2. POST /echo → leia o body; se JSON válido, 201 + eco; se body vazio/inválido, 400.
  3. Qualquer outra rota → 404 + {"error":"not_found"}.
  4. 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.