Skip to content

Jonatandb/weatherapp_api

Repository files navigation

Características generales y técnicas:

  • Desarrollado con JavaScript utilizando Node.js.
  • Se utiliza el API del servicio de clima Open Weather Map.
  • La ciudad actual se detecta con la IP del usuario, utilizando el servicio de IP-API.

desktop


Esta API provee en formato JSON el estado del tiempo por medio de diferentes endpoints:

  • Ruta base:

    • /v1
  • Endpoints:

    • /location (Devuelve nombre de la ciudad actual según la IP del usuario.)

    • /current/city (Devuelve clima según "city", o de la ciudad actual si no se especificó una.)

    • /forecast/city (Devuelve pronóstico a 5 días según "city", o de la ciudad actual si no se especificó una.)

      • Nota: El parámetro "city" es opcional. Si no está presente se usa la cuidad correspondiente a la IP del usuario.
    • /openapi (Swagger (openapi): Interfaz web que muestra documentación de la API y permite interactuar con los endpoints)


Requerimientos:


Miscelaneos:

  • Utilizar el archivo .env.example como modelo para crear un archivo llamado .env que tenga el siguiente contenido:
    • PORT (Especifica el puerto en que se desea que se ejecute la API.)
    • IP_API_SERVICE_BASE_URL (Especifica la url de la API que provee información sobre la ubicación según la IP proporcionada, viene pre-configurada.)
    • WEATHER_SERVICE_API_KEY (Especifica la API KEY de Open Weather Map. Requiere registro gratuito.)

Ejecución:

  • npm install
  • npm start
  • Navegar a http://localhost:3001/v1/openapi si se desea ver e interactuar con la lista de endpoints (3001 es el puerto sugerido, se debe configurar en el archivo .env -> PORT)

Tests/Coverage:

  • npm test
  • npm run test:coverage (Luego abrir el archivo: backend\coverage\lcov-report\index.html)
  • NOTA Debido a que tuve problemas para ejecutar los tests, ya que estoy usando módulos de ES con Dynamic imports en un proyecto CommonJS, tuve que crear dos nuevos scripts para correr los tests, los cuales utilizan características experimentales de Node JS. (Fuente). Los nuevos scripts son los siguientes:
    • npm run test:experimental
    • npm run test:coverage:experimental
      • (Solucionado instalando versiones anteriores de node-fetch y public-ip totalmente compatibles con CommonJS)

Pendientes/Bugs:


Sitios investigados: