En este laboratorio exploraremos el desarrollo de frameworks web para servicios REST. Para ello, utilizaremos los recursos obtenidos en el Taller 01, integrándolos a los requisitos principales de este nuevo proyecto.
Este framework incluirá herramientas que permitirán definir servicios REST mediante funciones Lambda, gestionar valores en las consultas (Query Parameters) y especificar la ubicación de archivos estáticos.
Este proyecto nos ayudará a comprender los fundamentos del desarrollo de frameworks web para servicios REST, permitiéndonos:
- Aplicar los conceptos del Taller 01 para construir una solución más robusta.
- Explorar el uso de funciones Lambda en la definición de servicios REST.
- Manejar parámetros de consulta (Query Parameters) para personalizar las respuestas del servicio.
- Especificar la ubicación de archivos estáticos, facilitando el acceso a recursos como imágenes, scripts y hojas de estilo.
La aplicación es un microframework en Java que configura y ejecuta un servidor HTTP simple. Este microframework proporciona una forma sencilla de configurar y ejecutar un servidor HTTP con rutas básicas y soporte para archivos estáticos.
- Usuario (User):
Es quien realiza solicitudes HTTP a través de un navegador web.
- Navegador (Browser):
Actúa como intermediario entre el usuario y el servidor HTTP. Realiza solicitudes HTTP al servidor en busca de recursos como archivos HTML, JavaScript, CSS o imágenes.
- Servidor HTTP (HttpServer):
Es el servidor que recibe y procesa las solicitudes HTTP enviadas por el navegador. Se encuentra dentro de un "grupo genérico", lo que indica que puede formar parte de una infraestructura más amplia.
El navegador envía varias solicitudes HTTP al servidor en el puerto 35000 para diferentes rutas:
- /script.js: Solicitud para obtener un archivo de JavaScript.
- /index.html: Solicitud para cargar el archivo principal de la página web.
- /estilos.css: Solicitud para cargar el archivo de estilos CSS.
- /Imagen/Chill.jpg: Solicitud para obtener una imagen ubicada en una ruta específica.
- Recursos (Archivos estáticos): Almacenados en el servidor, servidos a través de rutas específicas.
- Comunicación: Protocolo HTTP entre el cliente y el servidor.
El servidor procesa estas solicitudes y responde con los recursos correspondientes desde su sistema de archivos.
- Servidor HTTP: Clase HttpServer que maneja solicitudes HTTP.
- Manejo de rutas: Clase Route para mapear rutas específicas a manejadores.
- Clases de soporte:
- Request y Response para manejar y estructurar las solicitudes y respuestas.
- Utils con funciones auxiliares
- Archivos estáticos: Recursos en la carpeta resources/Files (HTML, CSS, imágenes, etc.).
- API REST: Endpoints definidos en HttpServer para manejar /api/saludo, /api/fecha, etc.
- Pruebas: Clases de prueba con JUnit para validar el comportamiento del servidor.
Este diagrama de clases representa la arquitectura de un microframework para servicios REST, dividiendo la funcionalidad en varias clases e interfaces.
Las clases principales (Request, Response, HttpServer) manejan las solicitudes, respuestas y la lógica del servidor, mientras que las interfaces (Route) definen cómo implementar rutas personalizadas.
Las siguientes instrucciones le permitirán obtener una copia del proyecto en funcionamiento en su máquina local para fines de desarrollo y prueba.
- Maven : Gestor de dependencias y automatización de construcción para Java.
- JavaScript : Lenguaje de programación para interactividad en la web.
- Java : Lenguaje de programación robusto para backend y aplicaciones empresariales.
* Versión Maven: 3.9.9
* Versión Java: 21
Realice los siguientes pasos para clonar el proyecto en su máquina local.
git clone https://github.com/Pau993/Taller02.git
cd Taller02
git checkout Taller02
mvn clean compile
Para ejecutar la aplicación, ejecute el siguiente comando:
mvn exec:java -Dexec.mainClass="com.example.HttpServer"
El anterior comando limpiará las contrucciones previas, compilará y empaquetará el código en un jar y luego ejecutará la aplicación.
Diríjase a su navegador de preferencia y vaya a la siguiente dirección: http://localhost:35000/ para ver la aplicación en funcionamiento.
Para ejecutar las pruebas, ejecute el siguiente comando:
Las pruebas realizadas en este proyecto se enfocan en la validación y verificación de requisitos relacionados con el proceso de gestión de solicitudes, asegurando su correcto funcionamiento y cumplimiento de especificaciones.
mvn test
- testHandleApiRequestSaludo 🛠️
Verifica que la solicitud a la ruta /api/saludo responde con HTTP 200 OK y contiene el mensaje JSON esperado.
- testHandleApiRequestFecha 📅
Valida que la solicitud a /api/fecha devuelve HTTP 200 OK y contiene una clave "fecha" en la respuesta.
- testHandleApiRequestNotFound ❌
Comprueba que una ruta inexistente, como /api/desconocido, devuelve HTTP 404 Not Found.
- testHandleApiPostRequest 📤
Evalúa que una solicitud POST a /api/enviar con un cuerpo JSON sea procesada correctamente y responda con HTTP 200 OK y el mensaje
- testHandleApiRequestHello Esta prueba verifica que el servidor HTTP maneje correctamente una solicitud a la ruta "/api/hello".
- Interfaz moderna y responsiva:
- Un diseño minimalista con un esquema de colores que incluye degradados de tonos morados, creando una experiencia visual sofisticada.
- Totalmente adaptable a diferentes dispositivos gracias a su diseño responsivo.
- Panel de busqueda de archivos, el cual permite leer cualquier tipo de archivo localmente.
- Gestión de archivos: ⚙️
- Incluye botones interactivos que permiten abrir y visualizar archivos clave como:
- Archivos JavaScript (script.js).
- Hojas de estilo CSS (estilos.css).
- Documentos HTML (index.html).
- Imágenes (Chill.jpg).
Grabacion.de.pantalla.2025-02-06.115145.mp4
- *Paula Natalia Paez Vega - Initial work - Paulinguis993
This project is licensed under the MIT License - see the LICENSE.md file for details
Agradecimientos al profeso Daniel Benavides por brindarme sus conocimientos.


