La creación de un acortador de URL con redireccionamientos implica varios componentes y pasos clave. A continuación se ofrece una descripción general de cómo se puede abordar:
1. Elija su pila tecnológica
- Lenguaje/marco de trabajo backend: Necesitará un lenguaje y un marco de trabajo del lado del servidor para gestionar las solicitudes, generar códigos cortos e interactuar con una base de datos. Entre las opciones más populares se incluyen Python (Flask, Django), Node.js (Express), Ruby (Rails), Go o PHP (Laravel).
- Base de datos: Es esencial disponer de una base de datos para almacenar la correspondencia entre los códigos cortos y las URL originales. Entre las opciones se incluyen PostgreSQL, MySQL, MongoDB o incluso Redis para enlaces cortos temporales de muy alto rendimiento.
- Interfaz de usuario (opcional, pero recomendada): Para una interfaz fácil de usar, puede utilizar HTML, CSS y JavaScript (con marcos como React, Vue o Angular) para permitir a los usuarios introducir URL largas y ver las URL cortas generadas.
2. Diseño del esquema de la base de datos
Necesitará una tabla (o colección) para almacenar sus asignaciones de URL. Un esquema básico podría incluir: * id: Clave principal (entero autoincremental o UUID).
* short_code: una cadena corta y única (por ejemplo, «abcde») que formará parte de tu URL corta. Debe indexarse para agilizar las búsquedas. * original_url: la URL completa y larga a la que redirige el código corto. * created_at: marca de tiempo de cuándo se creó la URL corta.
* clicks (opcional): un contador del número de veces que se ha accedido a la URL corta.
3. Lógica central del backend
-
Generación de códigos cortos:
- Cuando un usuario envía una URL larga, su backend debe generar un
short_codeúnico. - Esto se puede hacer de la siguiente manera:
- Generación de cadenas aleatorias: Genere una cadena aleatoria de longitud fija (por ejemplo, 6-8 caracteres) utilizando caracteres alfanuméricos. Deberá comprobar si este código ya existe en su base de datos y, en caso afirmativo, volver a generarlo para garantizar su unicidad.
- Hash: Realice un hash de la URL original o de una combinación de la URL y una marca de tiempo, y luego tome una parte del hash. Esto puede ser más determinista, pero sigue requiriendo comprobaciones de unicidad.
- Codificación Base62: Si utiliza un
idautoincremental en su base de datos, puede convertir ese ID entero en una cadena base62 (0-9, a-z, A-Z). Esto garantiza la unicidad y es muy eficiente.
- Cuando un usuario envía una URL larga, su backend debe generar un
-
Almacenamiento de la asignación:
- Una vez generado un
short_codeúnico, almacene elshort_codey laoriginal_urlen su base de datos.
- Una vez generado un
-
Gestión de redireccionamientos:
- Cuando un usuario accede a una URL corta (por ejemplo,
yourshortener.com/abcde), su servidor debe:- Extraer el
short_code(abcde) de la ruta de la URL. - Consultar su base de datos para encontrar la
original_urlasociada a eseshort_code. - Si la encuentra, emitir una redirección HTTP 301 (Movido permanentemente) o 302 (Encontrado) a la
original_url. Por lo general, se prefiere un 301 para las redirecciones permanentes, ya que los navegadores lo almacenan en caché, lo que reduce las solicitudes posteriores a su servidor. - Si no la encuentra, devolver una página de error 404 No encontrado.
- Extraer el
- Cuando un usuario accede a una URL corta (por ejemplo,
4. Puntos finales de la API (para el backend)
-
POST /shorten:- Toma
original_urlen el cuerpo de la solicitud. - Genera un
short_code. - Almacena la asignación.
- Devuelve la URL corta completa (por ejemplo,
yourshortener.com/generated_code).
- Toma
-
GET /:short_code:- Toma
short_codede la ruta URL. - Busca
original_url. - Realiza la redirección.
- Toma
5. Interfaz (si procede)
- Una página web sencilla con un campo de entrada para la URL larga y un botón para enviarla.
- Muestra la URL corta generada al usuario.
6. Implementación
- Necesitarás un nombre de dominio (por ejemplo,
myurl.short). - Aloja tu aplicación backend en un servidor (por ejemplo, AWS, Google Cloud, Heroku, Vercel).
- Configura tu servidor web (por ejemplo, Nginx, Apache) para enrutar las solicitudes a tu aplicación backend y gestionar el dominio.
Ejemplo de flujo:
- El usuario visita
yourshortener.com. - El usuario introduce
https://www.example.com/very/long/path/to/a/resourcey hace clic en «Acortar». - El frontend envía una solicitud
POSTayourshortener.com/shortencon la URL larga. - El backend genera un
short_codeúnico, comoXyZ12a. - El backend almacena
XyZ12a->https://www.example.com/very/long/path/to/a/resourceen la base de datos. - El backend responde con
yourshortener.com/XyZ12a. - El usuario comparte
yourshortener.com/XyZ12a. - Otro usuario hace clic en
yourshortener.com/XyZ12a. - Su navegador envía una solicitud
GETayourshortener.com/XyZ12a. - El backend busca
XyZ12ay encuentra la URL original. - El backend envía una respuesta de redireccionamiento HTTP 301 al navegador del usuario, apuntando a
https://www.example.com/very/long/path/to/a/resource. - El navegador del usuario navega entonces a la URL larga original.