AULA 45 MÓDULO 6 backend Node.js ⏱ 50 min

Servidor HTTP Nativo

Módulo http nativo. Request como Stream: ler body com eventos. Router manual. O que Express abstrai.

httpcreateServerIncomingMessageServerResponsestreambody parser

Servidor HTTP com módulo nativo

Antes de usar Express, vale entender o módulo http nativo do Node. Express é uma abstração sobre ele. Saber o que há embaixo torna você um developer mais completo.

🔧
por que aprender o nativo
Quando você debugar um problema de performance ou precisar de controle total sobre headers, saber o que o Express faz internamente é fundamental.

Request e Response em profundidade

O objeto IncomingMessage (req) e ServerResponse (res) são streams. Entender isso explica por que ler o body precisa de await/acumulação.

Express vs nativo
Express adiciona: router, middleware stack, body parser, melhor API de resposta, tratamento de erros. Para 99% dos projetos, use Express. Para entender o fundamento, estude o nativo.
javascript
// Servidor HTTP nativo — sem frameworks
const http = require('http')
const { URL } = require('url')

const server = http.createServer(async (req, res) => {
  const url = new URL(req.url, `http://${req.headers.host}`)

  // Ler body (req é stream)
  const readBody = () => new Promise((resolve) => {
    let body = ''
    req.on('data', chunk => body += chunk)
    req.on('end', () => resolve(body))
  })

  // Router manual
  if (req.method === 'GET' && url.pathname === '/users') {
    res.writeHead(200, { 'Content-Type': 'application/json' })
    res.end(JSON.stringify([{ id: 1, name: 'Ana' }]))
  } else if (req.method === 'POST' && url.pathname === '/users') {
    const body = await readBody()
    const data = JSON.parse(body)
    res.writeHead(201, { 'Content-Type': 'application/json' })
    res.end(JSON.stringify({ id: 2, ...data }))
  } else {
    res.writeHead(404)
    res.end(JSON.stringify({ error: 'Not found' }))
  }
})

server.listen(3000)
quiz · aula 45
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
Por que ler o body do req.http nativo precisa de acumulação?
QUESTÃO 02
O que Express adiciona sobre o módulo http nativo?
QUESTÃO 03
Para criar um servidor HTTP nativo em Node.js, você usa...
0/3