4-Servidores HTTP --Curso de Node.js#04 Fundamentos de servidor HTTP

Curso Express: Creación de Servidores HTTP con Node.js y Express

      HTTP 

           |

          V

    EXPRESS


tu-proyecto/

├── app.js        # (Tu código actual)

└── package.json  # (Con dependencias `express` y `ejs`)

Introducción a HTTP y Node.js

1. ¿Qué es HTTP? 🌐

HTTP (Protocolo de Transferencia de Hipertexto) es el lenguaje que usan los navegadores y servidores para comunicarse. Cuando visitas una página web:

  • Tu navegador (cliente) envía una solicitud (request)

  • El servidor procesa esta solicitud y envía una respuesta (response)

  • Esta respuesta puede ser HTML, CSS, imágenes, datos JSON, etc.

javascript

// Ejemplo de flujo HTTP

Cliente: "GET /index.html"  ➡️  

Servidor: "200 OK <html>...</html>" ⬅️


2. Módulo HTTP de Node.js ⚙️

Node.js incluye un módulo nativo http para crear servidores:

javascript

const http = require('http');


const server = http.createServer((req, res) => {

  res.writeHead(200, {'Content-Type': 'text/plain'});

  res.end('Hola Mundo desde Node.js!');

});

server.listen(3000, () => {

  console.log('Servidor corriendo en http://localhost:3000');

});

3. Verbos HTTP principales 🔌

Método

Descripción

Uso típico

GET

Obtener datos

Cargar páginas web

POST

Enviar datos

Formularios, APIs

PUT

Actualizar datos

Modificar recursos

DELETE

Eliminar datos

Borrar información


🛠️ Configurando Express - El framework esencial

4. Instalación y configuración básica

bash

npm init -y

npm install express

Archivo básico (app.js):

javascript

const express = require('express');

const app = express();

const PORT = 3000;

app.get('/', (req, res) => {

  res.send('¡Bienvenido a mi servidor Express!');

});

app.listen(PORT, () => {

  console.log(`Servidor Express corriendo en http://localhost:${PORT}`);

});

  • app.get('/', (req, res) => { ... });
    Define qué responder cuando alguien visita la ruta / (raíz).

  • res.send('...');
    Envía el texto o HTML como respuesta.

  • res.send() solo acepta cadenas (u objetos) – si le pasas un arreglo, lo interpreta como JSON.

  • Para enviar HTML con datos de un arreglo, construye la cadena manualmente (template strings o concatenación).

app.get(ruta, callback) define qué responder cuando alguien visita esa ruta (por ejemplo / o /productos).
res.send() envía la respuesta al navegador.

app.get(ruta, callback) sirve para escuchar peticiones GET a una dirección específica (por ejemplo, /inicio). Cuando alguien entra a esa ruta, se ejecuta el callback (función) que recibe los objetos req (petición) y res (respuesta).

res.send() se usa dentro del callback para enviar una respuesta al navegador o cliente: texto, JSON, HTML, etc.

Se complementan así:
app.get define qué hacer cuando llega la petición, y res.send ejecuta la respuesta. Sin res.send, el cliente se quedaría esperando.

javascript

app.get('/hola', (req, res) => {

  res.send('¡Hola mundo!');  // responde con el mensaje

});

5. Ventajas clave de Express 💎

  • Enrutamiento simplificado: Manejo fácil de diferentes rutas.

  • Middleware: Funciones intermedias para procesar requests.

  • Manejo de errores: Más fácil que con HTTP puro.

  • Comunidad activa: Miles de módulos disponibles (npm).

6. Middleware - El corazón de Express ❤️

Los middleware son funciones que procesan las solicitudes:

javascript

// Middleware para loggear todas las peticiones

app.use((req, res, next) => {

  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);

  next(); // Pasa al siguiente middleware

});

// Middleware para servir archivos estáticos

app.use(express.static('public'));

7. Manejo de rutas avanzado 🗺️

javascript

// Ruta básica

app.get('/about', (req, res) => {

  res.send('<h1>Acerca de nosotros</h1>');

});


// Ruta con parámetros

app.get('/users/:userId', (req, res) => {

  res.send(`Mostrando usuario ${req.params.userId}`);

});

// Manejo de formularios POST

app.post('/login', express.urlencoded(), (req, res) => {

  const { username, password } = req.body;

  // Validar credenciales...

});


📌 Próximos pasos recomendados

  • Express Generator: Crea estructuras de proyecto automáticamente

  • bash

  • npx express-generator

  • Routers: Separa tus rutas en módulos.

  • Plantillas: EJS, Pug o Handlebars para vistas dinámicas.

  • Conexión a bases de datos: MongoDB (Mongoose) o SQL (Sequelize).

Conclusión

Express simplifica enormemente la creación de servidores web en Node.js, permitiéndote:

✅ Manejar rutas complejas fácilmente
✅ Procesar diferentes tipos de solicitudes
✅ Implementar lógica de middleware
✅ Escalar tu aplicación de manera organizada

¿Listo para profundizar? ¡El siguiente paso sería aprender sobre autenticación de usuarios y conexión a bases de datos! 🎯


8. Nodemon para Desarrollo (nota adicional)

Instalación:

bash

npm install --save-dev nodemon

Configurar en package.json:

json

"scripts": {

  "start": "node app.js",

  "dev": "nodemon app.js"

}

Uso:

bash

npm run dev  # Recarga automática al guardar cambios

Comentarios

Entradas más populares de este blog

Cómo Iniciar un Proyecto Node.js

5-Express--Curso de Node.js#05 Introducción a Express.js

8-Template Engines