En mi caso nunca me funcionó con la API de OpenWeather así que usé la de AccuWeather siguiendo las instrucciones del sitio web de la API, sin problemas.
Introducción
Qué aprenderás sobre API con Sails.js
Presentando el proyecto
Comenzando con Sails
Introducción a Sails.js
Estructura de archivos
Preparación del ambiente de desarrollo
Setup de Espacio de Trabajo
Generando rutas REST con blueprint
Instalación de MongoDB
Conexión a Mongo
Instalar MySQL y usarlo con Sails (a través de WaterLine)
CRUD
Entendiendo operaciones CRUD
Crear modelo de rodada
Crear app de Ionic
Obtener todas las Rodadas: preparando la aplicación para mostrar datos
Obtener todas las Rodadas: mostrando los datos
Crear Rodada: recibiendo parámetros desde la URL
Crear Rodada: enviando información desde el formulario
Actualizar Rodada
Eliminar Rodadas
Autenticación y Usuarios
Obtener Rodada
Crear Modelo y Controller de Usuarios
Implementar validación de modelo
Nueva versión de la librería Joi
Crear Usuario
Cifrado de contraseña
Implementación de Login
Sistemas Externos
Uso de JSON Web Token
Policies: verificar si usuario está loggeado
Agregar usuario a Ride
Preparando la App para implementar el Login y Sign up
Implementando Login
Implementando Sign up
Agregar puntos de Rodada
Obtener API Keys para Clima y Distancias
Integración Google Geocoding: definiendo la lógica
Integración Google Geocoding: probando la funcionalidad
Integración Weather API
Desplegar clima, distancia y tiempo en cada punto de Rodada
Cierre
Cierre
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Obtener información del clima es esencial para muchas aplicaciones, como servicios de planificación de rutas. En esta guía, aprenderemos a integrar la API de OpenWeatherMap para obtener datos del clima utilizando coordenadas geográficas. Este proceso es similar a utilizar Google Maps para la obtención de distancias y tiempos.
Para comenzar, crearemos un servicio llamado "Weather" en nuestro proyecto existente. Este servicio será responsable de comunicarse con la API de OpenWeatherMap.
src/app/services
, crea un archivo weather.service.ts
.auth.service.ts
y adapta su contenido.export class WeatherService {
private readonly OPEN_WEATHER_URL = 'https://api.openweathermap.org/data/2.5/weather';
private readonly OPEN_WEATHER_API_KEY = 'TU_API_KEY_AQUI';
getWeather(lat: number, lon: number) {
const url = `${this.OPEN_WEATHER_URL}?lat=${lat}&lon=${lon}&appid=${this.OPEN_WEATHER_API_KEY}&units=metric`;
// Lógica para ejecutar la petición y manejar la respuesta
}
}
WeatherService
en tu módulo principal (app.module.ts
).Para que nuestra aplicación obtenga los datos del clima al calcular las distancias, debemos integrar el servicio de clima en el componente que realiza estos cálculos.
WeatherService
en el constructor del componente correspondiente.constructor(private weatherService: WeatherService) {}
this.weatherService.getWeather(latitude, longitude).subscribe(
data => {
console.log('Clima:', data);
// Integrar los datos del clima con la información existente
},
error => {
console.error('Error obteniendo el clima:', error);
}
);
La API de OpenWeatherMap requiere información específica para funcionar correctamente:
units=metric
.Integrar APIs puede tener desafíos. Aquí te dejamos un resumen de errores típicos y sus soluciones:
Errores de configuración:
API Key
.lat
, lon
, appid
).Errores de datos:
units=metric
para obtener valores en Celsius.Errores al construir las URLs de solicitud:
Con estos pasos y consejos, puedes habilitar tu aplicación para obtener y manejar información climática de manera efectiva. ¡Continúa practicando y mejorando tus habilidades en la integración de APIs!
Aportes 3
Preguntas 0
En mi caso nunca me funcionó con la API de OpenWeather así que usé la de AccuWeather siguiendo las instrucciones del sitio web de la API, sin problemas.
✌
En Caso de tener este Error: Missing required request header. Must specify one of: origin,x-requested-with
Solucion:
public getWeather(location) {
// Parametros para el encabezado
const headerDict = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Access-Control-Allow-Headers': 'Content-Type',
'x-requested-with': 'x-requested-by',
}
// Agregando encabezado de solicitud obligatorio HTTTP
const requestOptions = {
headers: new HttpHeaders(headerDict),
};
return this.http.get(`${this.openWeatherMap_url}lat=${location.lat}&lon=${location.lng}&APPID=${this.openWeatherMap_key}&units=metric`, requestOptions);
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?