Inicio > Cursos > Node.js y Express > Servidor HTTP Nativo
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().
← EventEmitter y ProcessExpress Básico →

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