Aller au contenu
Tutorial

API météo gratuite avec qualité de l'air en un seul appel

| 6 min read

Une clé API, deux points de terminaison et une fonction Node.js de 40 lignes qui renvoie la température actuelle et les PM2,5 pour n'importe quelle ville. Aucune mise à niveau au niveau du produit.

City skyline with haze representing weather and air quality data
Photo by NASA on Unsplash

Vous créez une application de notification d'incendies de forêt, un planificateur d'itinéraire ou une bannière de commerce électronique qui réagit à la qualité de l’air local. Vous avez besoin de la température actuelle, des conditions de pluie et des PM2,5. à partir de la même API. Chaque fournisseur météorologique populaire gère la qualité de l’air derrière un produit distinct niveau, une clé API distincte ou un contrat d'entreprise. Vous ne devriez pas avoir à payer 40 $ par mois pour indiquer à un utilisateur s'il est sécuritaire de faire du jogging à l'extérieur.

L'API botoi vous donne /v1/weather/current et /v1/air-quality/check sur la même clé gratuite. Deux points de terminaison POST, JSON in et JSON et 1000 demandes par jour une fois inscrit.

Pourquoi AQI est caché derrière un paywall

OpenWeatherMap vend son API Air Pollution en tant que mise à niveau. Le plan gratuit couvre la météo actuelle et une prévision sur cinq jours, mais la qualité de l'air historique et les limites d'appel AQI plus élevées sont en direct sur le Niveaux Professionnel et Entreprise à partir de 40 $ par mois. Vous disposez également d'une clé API distincte par famille de produits, un projet de loisir finit donc par jongler avec deux tableaux de bord.

WeatherAPI.com annonce un million d'appels gratuits par mois, et ils en tiennent compte pour la météo. La qualité de l’air est intégrée au plan Pro. AccuWeather maintient AQI sur son niveau Entreprise avec un porte d'appel de vente. Tomorrow.io vous propose un essai avec des plafonds tarifaires suffisamment bas pour qu'une seule page le rafraîchissement brûle votre budget.

Fournisseuse Appels gratuits IQA gratuit ? Authentification Points finaux combinés ?
publié 5/min anonyme, 1000/jour avec saisie Oui Une clé pour les deux Deux points de terminaison POST, une clé
Ouvrir la carte météo 1000/jour Non (mise à niveau payante) Clé séparée par produit Non, réparti entre les produits
WeatherAPI.com ~1M/mois Non (niveau Pro) Une clé, portail Pro Point de terminaison unique, Pro uniquement
AccuWeather 50/jour d'essai Non (Entreprise) Ventes fermées Non

Obtenez la météo actuelle en une seule boucle

La /v1/weather/current le point de terminaison accepte un nom de ville, un code postal ou une latitude/longitude paire. Il renvoie la température en Celsius et en Fahrenheit, l'humidité, la vitesse du vent, un texte condition, une clé d'icône que vous pouvez mapper à votre propre feuille de sprite et les coordonnées résolues.

Réponse:

Accrochez-vous au lat et lon champs. Vous les nourrirez directement dans le point final de la qualité de l'air afin de ne pas graver un deuxième appel de géocodage.

Ajoutez de la qualité de l'air dans une seconde boucle

La /v1/air-quality/check le point final prend la latitude/lon et renvoie l'US EPA Air Indice de qualité, label de catégorie et concentrations individuelles de polluants. PM2,5 et PM10 sont les deux chiffres qui intéressent la plupart des applications de santé ; le reste couvre l'ozone, le dioxyde d'azote, le dioxyde de soufre et le monoxyde de carbone pour des cas d'utilisation plus stricts.

Réponse:

Un IQA de 62 avec une étiquette modérée signifie que la plupart des gens peuvent sortir, mais toute personne souffrant d'asthme devrait y aller doucement. Le aqi_category Le champ vous évite de regrouper le nombre vous-même et garde votre copie d’interface utilisateur cohérente avec le langage officiel de l’EPA.

Combinez les deux dans une seule fonction Node.js

La plupart des applications souhaitent un numéro par ville, et non deux allers-retours distincts dispersés à travers la ville. base de code. Cette fonction de 40 lignes encapsule les deux points de terminaison, gère les délais d'attente et renvoie un résultat fusionné. objet que vous pouvez déposer dans n’importe quel tableau de bord.

La fonction effectue deux appels séquentiels car le second a besoin des coordonnées du premier. Si vous avez déjà mis en cache la latitude et la longitude à partir d'une requête précédente, exécutez les deux appels en parallèle avec Promise.all et réduisez la latence de moitié. Le nœud 20+ a natif fetch et AbortController, vous n'avez donc pas besoin d'axios ou de node-fetch.

Trois utilisations concrètes du code

Planificateur d'itinéraires de course à pied

Une application de fitness propose des parcours extérieurs. Lorsque les PM2,5 augmentent ou qu'un orage arrive, les suggestions d'itinéraire doivent s'arrêter et afficher une alternative intérieure. Cette fonction renvoie l'un des trois états : partir, sauter ou avertir.

Le retour à trois États est important. Un binaire oui/non cache le juste milieu où la course c'est bien mais plus court est plus intelligent. Les utilisateurs sensibles apprécient la nuance, et vous évitez frustrer les coureurs expérimentés avec des alertes trop prudentes.

Bannière de commerce électronique pour purificateurs d'air

Un magasin d'articles pour la maison vend des purificateurs d'air. Lorsqu'un visiteur atterrit en provenance d'une ville avec un AQI supérieur à 100, le produit est vraiment utile, alors faites-le surface. Lorsque l'air est pur, cachez la bannière pour qu'elle cela ne ressemble pas à du marketing de peur.

Récupérez les conditions chez vous /api/conditions proxy pour que votre clé API reste sur le serveur. Cachez le résultat par ville pendant 30 minutes en périphérie ; L'AQI évolue assez lentement cette fraîcheur d'une demi-heure convient parfaitement à une bannière de vitrine.

ETA de livraison avec tampon météo

Une application de livraison affiche une heure d'arrivée prévue de 25 minutes. De fortes pluies dans la ville du coureur signifient 10 minutes supplémentaires. Les orages signifient 20. Ajouter le tampon avant d'afficher l'ETA évite les déceptions les clients suivent un passager en retard.

Gardez les règles de tampon simples. Les conducteurs et les clients font tous deux confiance aux ETA qui atterrissent dans le fenêtre, et un rembourrage de 10 à 20 minutes par temps pluvieux est honnête plutôt que défensif.

Limites de taux et clés

L'accès anonyme permet 5 requêtes par minute et 100 par jour, basées sur IP. C'est suffisant pour créez une démo ou réalisez un projet personnel sans vous inscrire.

Inscrivez-vous pour une clé gratuite sur botoi.com/api de porter le plafond à 1000 demandes par jour. La même clé fonctionne à la fois pour la météo et la qualité de l'air, ainsi que pour plus de 190 autres paramètres sur la plateforme. Appuyez sur un 429 et l'API renvoie un Retry-After en-tête en quelques secondes donc votre client peut reculer proprement.

Points clés

  • /v1/weather/current prend une ville, un code postal ou une latitude/longitude et renvoie la température, l'humidité, le vent, l'état du texte et les coordonnées.
  • /v1/air-quality/check prend lat/lon et renvoie l'AQI de l'US EPA, une étiquette de catégorie, et lectures de PM2,5, PM10, O3, NO2, SO2 et CO.
  • Les deux points de terminaison partagent une clé API. Tous les autres fournisseurs facturent un supplément pour l'AQI ou le cachent derrière une porte d'entreprise.
  • Le niveau gratuit couvre 5 requêtes anonymes par minute, 1 000 par jour avec une clé. Les réponses sont mis en cache en périphérie sur Cloudflare Workers pour une latence inférieure à 100 ms.
  • Mettez en cache la météo pendant 15 minutes et l'AQI pendant 30 minutes dans votre application. Aucun des deux ne bouge assez vite avoir besoin d'une interrogation en temps réel, et la mise en cache vous maintient dans le niveau gratuit, même pour les applications lourdes tableaux de bord.

FAQ

Quelle échelle AQI l’API utilise-t-elle ?
Le point de terminaison /v1/air-quality/check renvoie l'indice de qualité de l'air de l'EPA des États-Unis, une échelle de 0 à 500 où 0 à 50 est bon, 51 à 100 modéré, 101 à 150 malsain pour les groupes sensibles, 151 à 200 malsain, 201 à 300 très malsain et 301+ dangereux. Le champ aqi_category porte l'étiquette, vous n'avez donc pas besoin de regrouper le numéro vous-même.
Quelle est la fraîcheur des données météorologiques ?
Les conditions actuelles sont actualisées toutes les heures par les services météorologiques nationaux. Pour la plupart des tableaux de bord, des applications de notification et des cas d'utilisation du commerce électronique, les observations horaires sont suffisamment précises. Si vous avez besoin de mises à jour infimes pour les alertes aériennes ou de temps violent, mettez en cache de manière moins agressive et appelez à la demande.
Est-ce que ça marche par code postal ou seulement lat/lon ?
Les deux. Envoyez {"city": "San Francisco"} ou {"city": "94107"} à /v1/weather/current et l'API le géocode pour vous. La réponse comprend des champs de latitude et de longitude afin que vous puissiez les insérer directement dans /v1/air-quality/check sans appel de géocodage séparé.
Existe-t-il un point de terminaison par lots pour plusieurs villes ?
Le point de terminaison météo gère une ville par requête. Pour plusieurs villes, répartissez-vous avec Promise.all côté client ; le niveau gratuit autorise 5 requêtes par minute, donc jusqu'à 5 villes par rafale. Pour les tâches par lots plus lourdes, une clé API gratuite augmente le plafond à 1 000 requêtes par jour.
Que se passe-t-il lorsque j'atteins la limite de débit ?
L'API renvoie HTTP 429 avec un en-tête Retry-After en quelques secondes. Reculez jusqu'à la valeur affichée et réessayez ; la fenêtre est d'une minute glissante pour l'accès anonyme et d'une journée glissante pour l'accès par clé. Gérez 429 explicitement afin de ne pas supprimer silencieusement les mises à jour météo de votre tableau de bord.

Commencez a construire avec botoi

150+ endpoints API pour la recherche, le traitement de texte, la generation d'images et les utilitaires pour developpeurs. Offre gratuite, sans carte bancaire.