跳转到内容
Tutorial

免费天气 API,一键了解空气质量

| 6 min read

一个 API 密钥、两个端点和一个 40 行 Node.js 函数,该函数可返回任何城市的当前温度和 PM2.5。 没有产品等级升级。

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

您正在构建野火通知应用程序、跑步路线规划器或电子商务横幅 对当地空气质量做出反应。 您需要当前温度、降雨情况和 PM2.5 来自相同的 API。 每个流行的天气提供商都通过单独的产品来控制空气质量 层、单独的 API 密钥或企业合同。 你不应该每月支付 40 美元 告诉用户在户外慢跑是否安全。

botoi API 为您提供 /v1/weather/current/v1/air-quality/check 在同一个免费密钥上。 两个 POST 端点,JSON in 和 JSON 注册后每天会收到 1000 个请求。

为什么 AQI 隐藏在付费墙后面

OpenWeatherMap 出售其空气污染 API 作为升级版。 免费计划涵盖当前天气 和五天的天气预报,但历史空气质量和更高的 AQI 呼叫限制实时显示 专业级和企业级起价为每月 40 美元。 您还携带一个单独的 API 密钥 每个产品系列,因此一个业余爱好项目最终会同时处理两个仪表板。

WeatherAPI.com 每月宣传一百万个免费电话,他们提供天气服务。 空气质量已包含在 Pro 计划中。 AccuWeather 将 AQI 保持在企业级 销售电话门。 Tomorrow.io 为您提供了一次试用,其费率上限足够低,以至于单个页面 刷新会消耗你的预算。

提供者 免费通话 无空气质量指数吗? 授权 合并端点?
发表 5/分钟匿名,1000/天密钥 是的 一键两用 两个 POST 端点,一键
打开天气地图 1000/天 否(付费升级) 每个产品都有单独的密钥 否,按产品划分
WeatherAPI.com 约 100 万/月 否(专业级) 一键,专业门 单端点,仅限专业版
准确天气 50/天试用 否(企业) 销售门控

一卷即可获取当前天气

/v1/weather/current 端点接受城市名称、邮政编码或纬度/经度 对。 它返回摄氏温度和华氏温度、湿度、风速、文本 条件、可以映射到自己的精灵表的图标键以及解析的坐标。

回复:

坚持住 latlon 字段。 你将直接将它们喂入 空气质量端点,这样您就不会浪费第二次地理编码调用。

在第二次卷发中增加空气质量

/v1/air-quality/check 端点获取纬度/经度并返回美国 EPA 空气 质量指数、类别标签和单个污染物浓度。 PM2.5 和 PM10 是大多数健康应用程序关心的两个数字; 其余包括臭氧、二氧化氮、 二氧化硫和一氧化碳适用于更严格的用例。

回复:

AQI 为 62,中等标签意味着大多数人可以外出,但患有哮喘的人 应该放轻松。 这 aqi_category 字段使您免于对数字进行存储 并让您的 UI 副本与 EPA 官方语言保持一致。

将两者结合在一个 Node.js 函数中

大多数应用程序希望每个城市有一个号码,而不是分散在整个城市的两个单独的往返行程 代码库。 这个 40 行函数包装了两个端点,处理超时,并返回一个合并的 您可以将对象放入任何仪表板中。

该函数执行两次连续调用,因为第二个调用需要第一个调用的坐标。 如果您已经缓存了先前请求的纬度/经度,请并行运行这两个调用 Promise.all 并将延迟减少一半。 Node 20+ 有原生 fetchAbortController,所以你不需要 axios 或 node-fetch。

代码的三种实际用途

跑步路线规划器

健身应用程序建议户外路线。 当PM2.5飙升或雷雨滚滚时, 路线建议应暂停并显示室内替代路线。 该函数返回以下之一 三种状态:执行、跳过或咨询。

三州回归很重要。 二元是/否隐藏了运行的中间立场 很好,但更短更聪明。 敏感的用户会欣赏其中的细微差别,而您会避免 过于谨慎的警报让经验丰富的跑步者感到沮丧。

空气净化器电商横幅

一家家居用品商店出售空气净化器。 当游客从 AQI 高于 100 的城市入境时, 该产品确实有用,所以请展示它。 当空气清洁时,隐藏横幅,以便 感觉不像恐惧营销。

从你自己获取条件 /api/conditions 代理,以便保留您的 API 密钥 在服务器上。 在边缘缓存每个城市的结果 30 分钟; AQI 变化足够缓慢 对于店面横幅来说,半小时的新鲜度就足够了。

带天气缓冲的预计交货时间

送货应用程序显示 25 分钟预计到达时间。 骑手所在城市的大雨意味着还要多10分钟。 雷暴意味着 20 度。在显示预计到达时间之前添加缓冲区可以防止失望 追踪迟到乘客的顾客。

保持缓冲区规则简单。 司机和乘客都信任到达目的地的预计到达时间 窗户,在潮湿的天气里休息 10 到 20 分钟是诚实的,而不是防御性的。

速率限制和密钥

匿名访问允许每分钟 5 个请求,每天 100 个请求,基于 IP。 这就足够了 无需注册即可构建演示或连接个人项目。

注册免费密钥: botoi.com/api 将请求上限提高到 1000 个 每天。 相同的密钥适用于天气和空气质量,以及 190 多个其他端点 平台。 点击 429,API 返回 Retry-After 标题以秒为单位 你的客户可以彻底退出。

要点

  • /v1/weather/current 获取城市、邮政编码或纬度/经度并返回温度, 湿度、风、文本条件和坐标。
  • /v1/air-quality/check 获取纬度/经度并返回 US EPA AQI(类别标签), 以及 PM2.5、PM10、O3、NO2、SO2 和 CO 读数。
  • 两个端点共享一个 API 密钥。 所有其他提供商都会对 AQI 收取额外费用或隐藏它 企业大门后面。
  • 免费套餐涵盖每分钟 5 个匿名请求,每天 1000 个密钥请求。 回应是 在 Cloudflare Workers 上进行边缘缓存,延迟低于 100 毫秒。
  • 在您的应用中缓存天气 15 分钟和 AQI 30 分钟。 两者的移动速度都不够快 需要实时轮询,并且缓存使您即使对于繁重的任务也可以保持在免费套餐内 仪表板。

FAQ

API 使用什么 AQI 等级?
/v1/air-quality/check 端点返回美国 EPA 空气质量指数,范围为 0-500,其中 0-50 为良好,51-100 为中等,101-150 为敏感群体不健康,151-200 为不健康,201-300 为非常不健康,301+ 为危险。 aqi_category 字段带有标签,因此您无需自己对数字进行存储。
天气数据有多新鲜?
国家气象部门每小时更新一次当前状况。 对于大多数仪表板、通知应用程序和电子商务用例,每小时观察已经足够准确。 如果您需要航空或恶劣天气警报的分钟级更新,请减少缓存并按需调用。
它是按邮政编码工作还是仅按纬度/经度工作?
两个都。 将 {"city": "San Francisco"} 或 {"city": "94107"} 发送到 /v1/weather/current,API 会为您进行地理编码。 响应包括纬度和经度字段,因此您可以将它们直接输入 /v1/air-quality/check ,而无需单独的地理编码调用。
是否有多个城市的批量端点?
天气端点针对每个请求处理一个城市。 对于多个城市,在客户端使用 Promise.all 进行扇出; 免费套餐每分钟允许 5 个请求,因此每次突发最多 5 个城市。 对于较繁重的批处理作业,免费的 API 密钥可将上限提高到每天 1000 个请求。
当我达到速率限制时会发生什么?
API 在几秒内返回带有 Retry-After 标头的 HTTP 429。 后退至显示的值并重试; 该窗口对于匿名访问是滚动分钟,对于密钥访问是滚动日。 明确处理 429,这样您就不会默默地从仪表板中删除天气更新。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。