En Node.js, el módulo url
proporciona utilidades para analizar, construir, modificar y verificar URLs de forma sencilla.
Esto es muy importante, porque muy frecuentemente usaremos Node.js para tareas asociadas con direcciones URL, como servir o descargar un recurso
Ejemplos de uso del módulo URL
Parseo de una URL
El primer paso para trabajar con una URL es analizarla para extraer sus componentes. El método URL
del módulo url
nos permite hacer esto de manera sencilla:
import { URL } from 'node:url';
const urlTexto = 'https://www.ejemplo.com/ruta/subruta?param1=valor1¶m2=valor2';
const miUrl = new URL(urlTexto);
console.log('Protocolo:', miUrl.protocol);
console.log('Host:', miUrl.host);
console.log('Ruta:', miUrl.pathname);
console.log('Parámetros de búsqueda:', miUrl.searchParams);
Construcción de una URL
También podemos construir una URL a partir de sus componentes utilizando el constructor URL
:
import { URL } from 'node:url';
const baseUrl = 'https://www.ejemplo.com';
const ruta = '/ruta/subruta';
const params = new URLSearchParams({
param1: 'valor1',
param2: 'valor2'
});
const urlCompleta = new URL(ruta, baseUrl);
urlCompleta.search = params.toString();
console.log('URL Completa:', urlCompleta.href);
Modificación de parámetros de una URL
Podemos manipular los parámetros de una URL de manera dinámica utilizando la clase URLSearchParams
:
import { URLSearchParams } from 'node:url';
const url = new URL('https://www.ejemplo.com/?param1=valor1¶m2=valor2');
// Obtener parámetros
console.log('Parámetro 1:', url.searchParams.get('param1'));
console.log('Parámetro 2:', url.searchParams.get('param2'));
// Añadir parámetro
url.searchParams.append('param3', 'valor3');
console.log('URL con nuevo parámetro:', url.href);
// Eliminar parámetro
url.searchParams.delete('param2');
console.log('URL sin param2:', url.href);
Resolución de URLs relativas
El módulo url
nos permite resolver URLs relativas en el contexto de una URL base:
import { resolve } from 'node:path';
const baseUrl = 'https://www.ejemplo.com/carpeta1/';
const urlRelativa = 'subcarpeta/archivo.html';
const urlResuelta = new URL(urlRelativa, baseUrl);
console.log('URL Resuelta:', urlResuelta.href);
Verificación de la validez de una URL
Finalmente, podemos verificar si una cadena es una URL válida utilizando el constructor URL
dentro de un bloque try-catch:
import { URL } from 'node:url';
function esURLValida(url) {
try {
new URL(url);
return true;
} catch (error) {
return false;
}
}
console.log('¿Es válida la URL?', esURLValida('https://www.ejemplo.com')); // true
console.log('¿Es válida la URL?', esURLValida('esto no es una URL')); // false
Descarga el código
Todo el código de esta entrada está disponible para su descarga en Github