URL

Una URL (Uniform Resource Locator) es una dirección de acceso a cualquier recurso o servicio en Internet.

Las URL están definidas en el estándar RFC 1738 y son un caso particular de los URI (Uniform Resource Identifier), definidos en el RFC 3986. Originalmente, las URL fueron creadas para la Web como direcciones de archivos, pero su uso se ha generalizado para acceder a todo tipo de servicios en Internet.

El formato completo de una URL es:

scheme://user:password@host:port/path?query#fragment


Donde:

  • Scheme: Protocolo de acceso utilizado por el servidor (HTTP, HTTPS, FTP, etc.).
  • user:password: Credenciales de acceso (opcional): Permite incluir un nombre de usuario y una contraseña para autenticarse en algunos servidores. Se usa en URLs como ftp://user:password@servidor.com, aunque su uso en HTTP está en desuso por razones de seguridad.
  • Host y port: Dirección del servidor y el puerto de conexión (por defecto, HTTP usa el puerto 80 y HTTPS el 443).
  • Path: Ruta del recurso (por ejemplo, la ubicación de un archivo en el servidor).
  • Query: Define parámetros con valores asignados, en el formato ?key1=valor1&key2=valor2&...
  • Fragment (o Anchor): Identifica un punto específico dentro del recurso, normalmente asociado a un atributo id="identificador" Por lo general esto es ejecutado por el navegador y te permite visualizar directamente el elemento

Así por ejemplo, en nuestro contexto, cuando hemos accedido a nuestro servidor web a través del navegador, hemos introducido:

http://localhost:5000


Donde:

  • http://Scheme: En este caso, el protocolo utilizado para la comunicación es HTTP.
  • localhostHost: Se refiere a la máquina local (tu propio ordenador). localhost es un nombre de dominio especial que apunta a la dirección 127.0.0.1, usada para pruebas y desarrollo local.
  • :5000Port: Es el puerto en el que el servidor está escuchando las peticiones. En este caso, Flask usa el puerto 5000 por defecto cuando ejecutas app.run().

En este caso, no se han añadido los otros elementos de la URL como path o query, pero veamos algunos ejemplos. Para ello se puede editar el código de app.py para añadir algunos ejemplos:

@app.route('/about')  
def about():
    return """ 
        <!DOCTYPE html> 
        <html>
        <head>
            <title>Mi Primer Rocódromo</title>
        </head>
        <body>
            <h1>¡Conócenos un poco más!</h1>
        </body>
        </html>
    """  

@app.route('/ciudad/<ciudad>')  
def ciudad(ciudad): # Flask automaticamente parsea y nos da elementos del path que sean dinamicos
    return f""" 
        <!DOCTYPE html> 
        <html>
        <head>
            <title>Mi Primer Rocódromo</title>
        </head>
        <body>
            <h1>¡Hola! Bienvenido al rocódromo de {ciudad}.</h1>
        </body>
        </html>
    """

# Ruta con query parameters (Ejemplo: http://localhost:5000/disponibilidad?via=ElGigante)
@app.route('/disponibilidad')  
def disponibilidad():
    via = request.args['via']  # Obtiene el parámetro 'via' de la query de la URL
    return f""" 
        <!DOCTYPE html> 
        <html>
        <head>
            <title>Mi Primer Rocódromo</title>
        </head>
        <body>
            <h2>La vía def escalada '{via}' está disponible para su uso.</h2>
        </body>
        </html>
    """

Para este último, estamos necesitamos importar la librería request. Esta librería nos permite acceder a los parámetros de la URL, tanto los parámetros de ruta (como el parámetro dinámico ciudad en la ruta /ciudad/<ciudad>) como los parámetros de consulta (query parameters) que se pasan después del signo de interrogación en la URL (como el parámetro via en la ruta /disponibilidad?via=ElGigante).

Cuando instalamos Flask, la librería request se instala automáticamente como parte de Flask, por lo que no es necesario instalarla por separado. Sin embargo, para usarla en nuestro código, debemos importarla explícitamente:

from flask import Flask, request

Como podemos observar, este enfoque nos permite definir múltiples rutas accesibles desde el navegador. Sin embargo, concentrar todas las rutas en un único archivo y escribir el código HTML como cadenas dentro del código Python puede resultar poco práctico y difícil de mantener. En la siguiente sección, exploraremos cómo estructurar mejor el código de nuestra aplicación. Pero antes, realizaremos un último ejercicio sobre URLs.

Ejercicio de clase

En este ejercicio, aprenderás a utilizar el parámetro fragment de la URL para navegar a un punto específico dentro de una página web.

Instrucciones:

  1. Crea una página HTML que contenga varias secciones y que cada secciṕn ocupe un espacio determinado.
  2. Asigna un identificador único (id) a cada sección.
  3. Pruebe a usar fragment en la url para saltar a otras secciones.