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
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 🔌
🛠️ 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).
Comentarios
Publicar un comentario