WeatherAPI es una API REST desarrollada con Spring Boot que permite consultar el clima actual e histórico de una ubicación específica utilizando la API de Visual Crossing. El proyecto implementa manejo de errores personalizado, validaciones, cacheo con Redis y limitación de peticiones mediante Bucket4j.
Realmente esta práctica fue hecha con fines educativo por lo cual, se puede encontrar puntos a mejorar.
Este proyecto es una práctica realizada a partir de la página roadmap.sh
- Consulta de clima actual por dirección.
- Consulta de clima histórico por dirección y fecha.
- Manejo de errores personalizado.
- Validación de datos de entrada.
- Cacheo de respuestas usando Redis.
- Limitación de peticiones (rate limiting) con Bucket4j.
- Arquitectura limpia y separación de capas (controladores, servicios, DTOs, excepciones).
- Java 21
- Spring Boot 3.5.0
- Spring WebFlux
- Spring Data Redis
- Bucket4j
- Lombok
- Maven
-
Clona el repositorio:
git clone https://github.com/kgonzagao/WeatherAPI.git cd WeatherAPI -
Configura las variables de entorno
Crea un archivoapplication.propertiesensrc/main/resourcescon tus claves de API y configuración de Redis:env.api_key=TU_API_KEY env.api_url_base=https://weather.visualcrossing.com/VisualCrossingWebServices/rest/services/timeline/ spring.redis.host=localhost spring.redis.port=6379 -
Compila el proyecto:
mvn clean install
-
Ejecuta la aplicación:
mvn spring-boot:run
GET /weather/current?address=Ciudad,País
GET /weather/historical?address=Ciudad,País&date=YYYY-MM-DD
Este proyecto está bajo la Licencia Apache 2.0.