Skip to content

JonLerida/X-Serv-18.1-Practica1

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

X-Serv-18.1-Practica1

Práctica 1 (Ejercicio 18.1): Web acortadora de URLs

Enunciado

Esta práctica tendrá como objetivo la creación de una aplicación web simple para acortar URLs. La aplicación funcionará únicamente con datos en memoria: se supone que cada vez que la aplicación muera y vuelva a ser lanzada, habrá perdido todo su estado anterior. La aplicación tendrá que realizarse según un esquema de clases similar al explicado en clase.

El funcionamiento de la aplicación será el siguiente:

  • Recurso /, invocado mediante GET. Devolverá una página HTML con un formulario. En ese formulario se podrá escribir una url, que se enviará al servidor mediante POST. Además, esa misma página incluirá un listado de todas las URLs reales y acortadas que maneja la aplicación en este momento.
  • Recurso /, invocado mediante POST. Si el comando POST incluye una qs (query string) que corresponda con una url enviada desde el formulario, se devolverá una página HTML con la url original y la url acortada (ambas como enlaces pinchables), y se apuntará la correspondencia (ver más abajo).

    Si el POST no trae una qs que se haya podido generar en el formulario, devolverá una página HTML con un mensaje de error.

    Si la URL especificada en el formulario comienza por http:// o https://, se considerará que ésa es la URL a acortar. Si no es así, se le añadirá http:// por delante, y se considerará que esa es la url a acortar. Por ejemplo, si en el formulario se escribe http://gsyc.es, la url a acortar será http://gsyc.es. Si se escribe gsyc.es, la URL a acortar será http://gsyc.es.

    Para determinar la URL acortada, utilizará un número entero secuencial, comenzando por 0, para cada nueva petición de acortamiento de una URL que se reciba. Si se recibe una petición para una URL ya acortada, se devolverá la URL acortada que se devolvió en su momento.

    Así, por ejemplo, si se quiere acortar

    http://docencia.etsit.urjc.es

    y la aplicación está en el puerto 1234 de la máquina localhost, se invocará (mediante POST) la URL

    http://localhost:1234/

    y en el cuerpo de esa petición HTTP irá la qs

    url=http://docencia.etsit.urjc.es

    si el campo donde el usuario puede escribir en el formulario tiene el nombre URL. Normalmente, esta invocación POST se realizará rellenando el formulario que ofrece la aplicación.

    Como respuesta, la aplicación devolverá (en el cuerpo de la respuesta HTTP) la URL acortada, por ejemplo

    http://localhost:1234/3

    Si a continuación se trata de acortar la URL

    http://docencia.etsit.urjc.es/moodle/course/view.php?id=25

    mediante un procedimiento similar, se recibirá como respuesta la URL acortada

    http://localhost:1234/4

    Si se vuelve a intentar acortar la URL

    http://docencia.etsit.urjc.es

    como ya ha sido acortada previamente, se devolverá la misma URL corta:

    http://localhost:1234/3

  • Recursos correspondientes a URLs acortadas. Estos serán números con el prefijo /. Cuando la aplicación reciba un GET sobre uno de estos recursos, si el número corresponde a una URL acortada, devolverá un HTTP REDIRECT a la URL real. Si no la tiene, devolverá HTTP ERROR Recurso no disponible.

    Por ejemplo, si se recibe

    http://localhost:1234/3

    la aplicación devolverá un HTTP REDIRECT a la URL

    http://docencia.etsit.urjc.es

Comentarios de implementación

Se recomienda utilizar la clase webApp del fichero webapp.py, heredando de la misma. La funcionalidad de esta práctica debería implementarse en el fichero practica1.py.

Se recomienda utilizar dos diccionarios para almacenar las URLs reales y los números de las URLs acortadas. En uno de ellos, la clave de búsqueda será la URL real, y se utilizará para saber si una URL real ya está acortada, y en su caso saber cuál es el número de la URL corta correspondiente.

En el otro diccionario la clave de búsqueda será el número de la URL acortada, y se utilizará para localizar las URLs reales dadas las cortas. De todas formas, son posibles (e incluso más eficientes) otras estructuras de datos.

Se recomienda realizar la aplicación en varios pasos:

  1. Comenzar por reconocer GET /, y devolver el formulario correspondiente.
  2. Reconocer POST /, y devolver la página HTML correspondiente (con la URL real y la acortada).
  3. Reconocer GET /num (para cualquier número num), y realizar la redirección correspondiente.
  4. Manejar las condiciones de error y realizar el resto de la funcionalidad.

Entrega

Has de tener un repositorio llamado X-Serv-18.1-Practica1 en tu cuenta en GitHub que incluya el fichero de nombre 'practica1.py' que contenga las instrucciones en Python para solucionar el ejercicio.

Se proporciona un script, check.py, para comprobar la entrega correcta del ejercicio. El script de comprobación se ha de ejecutar desde terminal pasándole como parámetro tu nombre de usuario en GitHub. Así, un ejemplo de ejecución sería:

$ python check.py gregoriorobles

About

Práctica 1 (Ejercicio 18.1): Web acortadora de URLs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%