Node.js y ExpressNode.js CoreLección 5 de 20
Servidor HTTP Nativo
El módulo http de Node.js permite crear servidores web sin ninguna dependencia externa. Aunque en proyectos reales usarás Express, entender cómo funciona el servidor nativo te da una base sólida para depurar problemas y entender qué hace Express por ti.
const http = require('http');
const { URL } = require('url');
const server = http.createServer((req, res) => {
const baseURL = `http://${req.headers.host}`;
const url = new URL(req.url, baseURL);
const pathname = url.pathname;
const method = req.method;
// Parsear body para POST/PUT
let body = '';
req.on('data', (chunk) => {
body += chunk.toString();
});
req.on('end', () => {
let data = {};
if (body) {
try { data = JSON.parse(body); } catch (e) {}
}
// Routing manual
if (method === 'GET' && pathname === '/') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ mensaje: 'Bienvenido a mi API' }));
} else if (method === 'GET' && pathname === '/usuarios') {
const usuarios = [{ id: 1, nombre: 'Ana' }, { id: 2, nombre: 'Luis' }];
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(usuarios));
} else if (method === 'POST' && pathname === '/usuarios') {
res.writeHead(201, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ id: 3, ...data }));
} else {
res.writeHead(404, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'Ruta no encontrada' }));
}
});
});
server.listen(3000, () => {
console.log('Servidor corriendo en http://localhost:3000');
});
ConsejoEl body de una petición HTTP llega en chunks (trozos). Por eso necesitas acumular los eventos "data" y esperar el evento "end" para tener el body completo. Express hace esto automáticamente con express.json().
Practica esta lección
Resuelve los ejercicios del curso de Node.js y Express en la app, gratis y con corrección automática.
Empezar a practicar