共计 1784 个字符,预计需要花费 5 分钟才能阅读完成。
1. AQICN Token 是什么?
AQICN Token 是访问全球空气质量指数(AQI)数据的通行证。通过这个 Token,开发者可以调用 AQICN 提供的 API 接口,获取实时和历史空气质量数据。这些数据广泛应用于:

- 健康类 App 的空气质量提醒功能
- 智能家居设备的空气净化控制
- 环境监测系统的数据分析
- 学术研究的空气质量趋势分析
2. 如何获取你的 Token
- 访问 AQICN 数据平台官网
- 点击页面右上角的 “Register” 按钮
- 填写基本信息并完成邮箱验证
- 登录后在个人中心找到 “API Token” 选项
- 点击 “Generate Token” 获取你的专属密钥
注意:
– 新注册用户默认有 1000 次 / 天的免费调用额度
– Token 生成后需要 5-10 分钟才能生效
– 建议立即复制保存 Token,页面刷新后将不再显示完整 Token
3. 你的第一个 API 调用(Python 示例)
import requests
from time import sleep
# 配置参数
TOKEN = '你的 Token' # 替换为实际 Token
CITY = 'beijing' # 查询城市
MAX_RETRY = 3 # 最大重试次数
# 带重试机制的请求函数
def fetch_aqi_data():
url = f'https://api.waqi.info/feed/{CITY}/?token={TOKEN}'
for attempt in range(MAX_RETRY):
try:
response = requests.get(url, timeout=10)
data = response.json()
if data['status'] == 'ok':
return data['data']
else:
print(f"请求失败: {data.get('data',' 未知错误 ')}")
except Exception as e:
print(f"尝试 {attempt + 1} 失败: {str(e)}")
if attempt < MAX_RETRY - 1:
sleep(2) # 指数退避更好,这里简化为固定间隔
return None
# 调用示例
if __name__ == '__main__':
aqi_data = fetch_aqi_data()
if aqi_data:
print(f"当前 {CITY} AQI: {aqi_data['aqi']}")
print(f"主要污染物: {aqi_data.get('dominentpol',' 无 ')}")
4. 常见问题解决方案
问题 1:返回 429 请求过多错误
- 原因:超过免费用户 1000 次 / 天的调用限制
- 解决方案:
- 实现本地缓存(建议缓存时间 10-30 分钟)
- 升级到付费计划获取更高限额
- 优化调用频率,非必要不实时刷新
问题 2:Token 失效或无效
- 可能原因:
- Token 被泄露后重置
- 超过 6 个月未使用自动失效
- 解决方案:
- 重新生成新 Token
- 检查 Token 字符串是否完整复制
- 确保请求 URL 中 Token 参数名称正确(是
token不是key)
5. 性能优化技巧
- 缓存策略:
- 对不常变的数据(如城市列表)做长期缓存
- 对实时数据采用短时间缓存(5-10 分钟)
-
使用 Redis 或 Memcached 实现分布式缓存
-
批量请求优化:
- 使用
/api/search/端点批量获取多个站点数据 - 示例请求:
https://api.waqi.info/search/?token=YOUR_TOKEN&keyword=beijing
6. 安全注意事项
- Token 存储:
- 永远不要将 Token 硬编码在客户端代码中
- 使用环境变量或密钥管理服务(如 AWS Secrets Manager)
-
在版本控制系统中添加
.env到.gitignore -
访问控制:
- 定期轮换 Token(建议每 3 个月)
- 在服务器端实现 API 代理,避免前端直接调用
- 监控异常调用模式(如突发大量请求)
7. 生产环境最佳实践
- 监控与告警:
- 设置 AQI 数据更新监控(如超过 1 小时未更新触发告警)
-
监控 API 错误率(正常应低于 1%)
-
优雅降级:
- 当 API 不可用时使用最近缓存数据
-
在 UI 上明确标注数据非实时状态
-
数据预处理:
- 对异常值(如负 AQI)进行过滤
- 添加数据有效期时间戳
进一步学习
- 官方文档:AQICN API 文档
- GitHub 上的开源项目参考:
aqicn-python等客户端库 - Postman 官方 API 集合:可导入快速测试
小贴士:开发测试阶段可以先用 demo 作为 Token 进行基础功能验证(但有严格限制)。正式上线前务必替换为自己的 Token。
正文完
