Es un módulo nativo de Node.js para crear servidores web y hacer solicitudes HTTP.
const http = require('http');
const https = require('https');
const url = require('url');
const fs = require('fs'); Crea un servidor HTTP en Node.js que maneja peticiones GET y POST. Para las peticiones GET, devuelve un mensaje o una lista de usuarios, mientras que para las POST procesa los datos recibidos y responde con un mensaje de confirmación o error. Utiliza el módulo http de Node.js y realiza el enrutamiento basado en la URL y el método de la petición.
const servidor = http.createServer((req, res) => {
// Manejo de diferentes rutas y métodos
switch(req.method) {
case 'GET':
// Enrutamiento básico
switch(req.url) {
case '/':
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ mensaje: 'Inicio del servidor' }));
break;
case '/usuarios':
const usuarios = [
{ id: 1, nombre: 'Juan' },
{ id: 2, nombre: 'María' }
];
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(usuarios));
break;
default:
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Ruta no encontrada');
}
break;
case 'POST':
let cuerpo = '';
req.on('data', chunk => {
cuerpo += chunk.toString();
});
req.on('end', () => {
try {
const datos = JSON.parse(cuerpo);
res.writeHead(201, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({
mensaje: 'Datos recibidos',
datosRecibidos: datos
}));
} catch (error) {
res.writeHead(400, { 'Content-Type': 'text/plain' });
res.end('Error en los datos');
}
});
break;
}
}); Este código configura el puerto del servidor, utilizando el valor de la variable de entorno PORT o 3000 por defecto. Luego, inicia el servidor y muestra un mensaje en consola indicando que está corriendo en el puerto especificado.
const PUERTO = process.env.PORT || 3000;
servidor.listen(PUERTO, () => {
console.log(`Servidor corriendo en http://localhost:${PUERTO}`);
}); Se define una función que realiza una solicitud HTTP GET usando el módulo https de Node.js, y devuelve una promesa que resuelve los datos recibidos o rechaza un error. Los datos se parsean a JSON al finalizar la solicitud.
function realizarSolicitudGet(urlDestino) {
return new Promise((resolve, reject) => {
https.get(urlDestino, (res) => {
let datos = '';
res.on('data', (chunk) => {
datos += chunk;
});
res.on('end', () => {
try {
const datosParseados = JSON.parse(datos);
resolve(datosParseados);
} catch (error) {
reject(error);
}
});
}).on('error', (error) => {
reject(error);
});
});
} Se define un middleware de seguridad que verifica si la solicitud incluye un token de autorización en los encabezados.
Si el token no está presente, responde con un error 401, de lo contrario, pasa al siguiente middleware o ruta.
function middlewareSeguridad(req, res, next) {
// Ejemplo de validación de headers
const tokenAutorizacion = req.headers['authorization'];
if (!tokenAutorizacion) {
res.writeHead(401, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'No autorizado' }));
return;
}
// Continuar con la solicitud
next();
} Maneja errores no controlados en Node.js, capturándolos y registrándolos en la consola para realizar acciones de limpieza o registro.
process.on('uncaughtException', (error) => {
console.error('Error no controlado:', error);
// Realizar acciones de limpieza o registro
}); Esta función parsearURL utiliza el módulo url de Node.js para analizar una URL completa y devolver un objeto con los componentes de la URL.
function parsearURL(urlCompleta) {
return url.parse(urlCompleta, true);
} Código exporta varias funciones y métodos, permitiendo su uso en otros archivos de Node.js, incluyendo crearServidor, realizarSolicitudGet, middlewareSeguridad y parsearURL.
module.exports = {
crearServidor: http.createServer,
realizarSolicitudGet,
middlewareSeguridad,
parsearURL
};