Este proyecto es un desafío práctico desarrollado en Java cuyo objetivo es consumir una API pública, procesar la información recibida y almacenarla en formato JSON utilizando buenas prácticas de programación orientada a objetos.
La aplicación permite al usuario consultar información sobre las películas de Star Wars a través de la SWAPI (Star Wars API), seleccionar episodios específicos y guardar los resultados en un archivo JSON con formato legible.
El objetivo principal de este desafío fue reforzar conceptos clave como:
-
Consumo de APIs REST usando HttpClient
-
Manejo de datos en formato JSON
-
Serialización y deserialización con Gson
-
Manejo de errores y validación de entradas del usuario
-
Separación de responsabilidades entre clases
-
Uso de colecciones para almacenar múltiples resultados
-
Más allá de “hacer que funcione”, el foco estuvo en entender qué hace cada parte del código y por qué.
Al iniciar la aplicación, el usuario puede ingresar un número del 1 al 6 para seleccionar una película de Star Wars o escribir salir para finalizar el programa.
Cada número corresponde a un recurso específico de la SWAPI, que devuelve la información completa de la película en formato JSON. La aplicación:
-
Valida la entrada del usuario.
-
Realiza una solicitud HTTP a la API.
-
Verifica que la respuesta sea un JSON válido.
-
Convierte la respuesta a un objeto Java.
-
Almacena las películas consultadas en una colección.
-
Genera un archivo .json con formato pretty print.
-
Esto permite consultar varias películas en una sola ejecución y guardarlas todas juntas.
-
Java 17+
-
HttpClient (Java estándar)
-Gson para manejo de JSON
-
SWAPI (API pública de Star Wars)
-
Programación Orientada a Objetos (POO)
El proyecto está organizado en clases con responsabilidades claras:
-
Una clase principal que gestiona la interacción con el usuario.
-
Un servicio para consumir la API.
-
Un modelo que representa una película.
-
Un servicio encargado de la escritura del archivo JSON.
Esta separación facilita el mantenimiento del código y evita dependencias innecesarias entre componentes.
La aplicación contempla varios casos comunes de error, como:
- Entradas no numéricas por parte del usuario.
- Solicitudes inválidas a la API.
- Respuestas que no contienen un JSON válido.
- Errores de comunicación o escritura de archivos.
Estos casos se manejan sin detener abruptamente la ejecución del programa.
Durante el desarrollo de este desafío aprendí a:
Validar datos antes de procesarlos.
Comprender que el identificador del recurso en una API no siempre coincide con el número de episodio.
Integrar librerías externas de forma consciente.
Detectar errores analizando el contenido real de una respuesta HTTP.
Mejorar la calidad del código aplicando buenas prácticas, no solo “soluciones rápidas”.
Mapear correctamente los episodios a los IDs reales de la API.
Guardar múltiples archivos o agregar un historial.
Convertir la aplicación en una pequeña API propia.
Agregar pruebas unitarias.
Mejorar la experiencia de usuario en consola.
- Anderson Collazos (MrCopixt0)
-Pd: Proyecto desarrollado como parte de un desafío práctico de aprendizaje en Java y consumo de APIs.