Node.js, conhecido por sua eficiência e escalabilidade no desenvolvimento de aplicações, oferece uma maneira poderosa de criar servidores HTTP. Neste artigo, vamos explorar a construção de um servidor HTTP com Node.js em três níveis: básico, intermediário e avançado, para que você possa compreender desde os conceitos fundamentais até as práticas mais avançadas na criação de servidores web.
1. Entendendo os Fundamentos
Criando um Servidor Simples:
O primeiro passo é importar o módulo http do Node.js e criar um servidor básico que responde a todas as requisições com uma mensagem simples.
Exemplo:
const http = require('http'); const servidor = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Olá, mundo!\n'); }); const porta = 3000; servidor.listen(porta, () => { console.log(`Servidor rodando em http://localhost:${porta}/`); });2. Aprimorando Recursos e Respostas
Servindo Páginas HTML Estáticas:
Vamos avançar para servir páginas HTML estáticas. Isso envolve a leitura de arquivos e a resposta adequada ao cliente.
Exemplo:
const http = require('http'); const fs = require('fs'); const servidor = http.createServer((req, res) => { if (req.url === '/') { fs.readFile('pagina.html', 'utf8', (err, data) => { if (err) { res.writeHead(500, { 'Content-Type': 'text/plain' }); res.end('Erro interno no servidor.\n'); return; } res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(data); }); } else { res.writeHead(404, { 'Content-Type': 'text/plain' }); res.end('Página não encontrada.\n'); } }); const porta = 3000; servidor.listen(porta, () => { console.log(`Servidor rodando em http://localhost:${porta}/`); });3. Implementando Roteamento Dinâmico e Middleware
Roteamento Dinâmico e Middleware:
Para um servidor mais avançado, adotaremos um sistema de roteamento dinâmico e implementaremos middlewares para melhorar a modularidade.
Exemplo:
const http = require('http'); const fs = require('fs'); const rotas = { '/': (req, res) => { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('<h1>Página Inicial</h1>'); }, '/sobre': (req, res) => { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('<h1>Sobre Nós</h1>'); }, '/contato': (req, res) => { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('<h1>Entre em Contato</h1>'); }, // Adicione mais rotas conforme necessário }; const middlewareLog = (req, res) => { console.log(`Requisição para: ${req.url}`); }; const servidor = http.createServer((req, res) => { middlewareLog(req, res); const rotaHandler = rotas[req.url]; if (rotaHandler) { rotaHandler(req, res); } else { res.writeHead(404, { 'Content-Type': 'text/plain' }); res.end('Página não encontrada.\n'); } }); const porta = 3000; servidor.listen(porta, () => { console.log(`Servidor rodando em http://localhost:${porta}/`); });Conclusão: Desenvolvendo Habilidades de Servidor HTTP com Node.js
Construir um servidor HTTP com Node.js é uma jornada emocionante, desde os fundamentos até as práticas mais avançadas. Este artigo forneceu exemplos em três níveis para garantir que você compreenda os conceitos essenciais, aprimore recursos e explore a modularidade avançada com middlewares e roteamento dinâmico.
Ao aplicar esses exemplos em seus projetos, você estará preparado para criar servidores web robustos e eficientes com Node.js. Continue explorando e construindo, aproveitando todo o potencial que essa plataforma oferece para o desenvolvimento de servidores HTTP.



Deixe um comentário