4-Servidores 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
Copy
Download
// 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
Copy
Download
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étodoDescripciónUso típico
GETObtener datosCargar páginas web
POSTEnviar datosFormularios, APIs
PUTActualizar datosModificar recursos
DELETEEliminar datosBorrar información

🛠️ Configurando Express - El framework esencial

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

bash
Copy
Download
npm init -y
npm install express

Archivo básico (app.js):

javascript
Copy
Download
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}`);
});

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
Copy
Download
// 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
Copy
Download
// 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...
});

🚦 Flujo de trabajo profesional

8. Nodemon - Recarga automática 🔄

Instalación:

bash
Copy
Download
npm install --save-dev nodemon

Uso (en package.json):

json
Copy
Download
"scripts": {
  "start": "node app.js",
  "dev": "nodemon app.js"
}

Ejecutar en desarrollo:

bash
Copy
Download
npm run dev

9. Estructura recomendada de proyecto 📁

Copy
Download
mi-proyecto/
├── node_modules/
├── public/
│   ├── css/
│   ├── js/
│   └── images/
├── routes/
│   ├── api.js
│   └── web.js
├── views/
├── app.js
├── package.json
└── .gitignore

📌 Próximos pasos recomendados

  1. Express Generator: Crea estructuras de proyecto automáticamente

    bash
    Copy
    Download
    npx express-generator
  2. Routers: Separa tus rutas en módulos

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

  4. 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! 🎯

Comentarios

Entradas más populares de este blog

9-Nuestra Primera Plantilla con EJS

6-Middleware?

Cómo Iniciar un Proyecto Node.js