适用场景
对于需要实时天气、分钟级降水、逐小时及15天预报的应用——如个人天气面板、户外活动辅助、农业气象监测、智能家居环境联动等,彩云天气API提供了覆盖全面、数据中文化的集成方案。它的优势在于:
- 一次请求即可获取实时、分钟级、小时级、天级和预警的综合数据(type=weather)
- 支持城市名直接查询,无需额外申请地图API Key
- 自动将英文字段(如skycon)转化为中文描述及Emoji,减少前端转译工作
接口能力边界
| 模式 | 返回内容 | 最长跨度 |
|---|---|---|
| realtime | 实时温湿度、风速、能见度、AQI | 单点当前时刻 |
| minutely | 未来2小时分钟级降水强度 | 120分钟 |
| hourly | 逐小时预报(温度、天气、风速等) | 360小时(15天) |
| daily | 逐日预报(日出日落、气温极值、生活指数) | 15天 |
| weather(综合) | 上述全部 + 气象预警 + summary | — |
QPS限制:10次/秒,适用于中小流量场景。更高频调用需注意限流或缓存策略。
查询参数与鉴权
Query参数
| 参数 | 类型 | 必填 | 说明 | |------|------|------|------|\n| type | string | 否 | 查询类型:realtime / minutely / hourly / daily / weather(默认weather) | | city | string | 二选一 | 城市/区名,如“北京”“朝阳区”。内置约140个常用城市;未匹配则通过Open-Meteo兜底 | | location | string | 二选一 | 经纬度,格式经度,纬度(如116.3975,39.9085),优先级高于city | | alert | string | 否 | 是否包含预警:true/false,默认true(仅对realtime/weather生效) | | days | number | 否 | 天预报步长,1~15,默认5(仅对daily/weather生效) | | hours | number | 否 | 小时预报步长,1~360,默认24(仅对hourly/weather生效) |
Header鉴权
通过X-API-Key请求头传入API Key(可选——不传则使用匿名额度)。实际生产环境中建议将Key保存在环境变量或配置中心,避免硬编码。
最小可运行curl示例
以下示例查询北京的综合天气(包含实时、分钟级、小时、天及预警),使用匿名额度(不传Key)或可替换为自己的Key:
curl -sS -X GET \ "https://v1.apizero.cn/api/weather?city=北京&type=weather"若需要附带API Key,请先设置环境变量APIZERO_API_KEY:
export APIZERO_API_KEY="your_api_key_here" curl -sS -X GET \ -H "X-API-Key: $APIZERO_API_KEY" \ "https://v1.apizero.cn/api/weather?city=北京&type=weather"参数组合示例
- 仅实时 + 预警:
type=realtime&alert=true - 逐小时预报15天(360小时):
type=hourly&city=上海&hours=360 - 经纬度查询并指定天预报步长10:
type=daily&location=120.1551,30.2741&days=10
返回字段解读
成功响应以JSON数组形式返回(因网关封装,外表为数组,内部仅一项对象):
[ { "status": "200", "description": "成功", "content_type": "application/json", "example": { "code": 0, "msg": "成功", "request_id": "mota_xxxxx", "data": { "type": "weather", "server_time": "2026-05-06 08:43:01", "location": { "city": "北京", "latitude": 39.9042, "longitude": 116.4074, "timezone": "Asia/Shanghai" }, "summary": { "temperature": 21.5, "apparent_temperature": 21.8, "humidity_percent": 55, "visibility_km": 20.3, "skycon": "小雨", "skycon_code": "LIGHT_RAIN", "skycon_emoji": "🌦️", "cloudrate_percent": 100, "wind": { "speed_ms": 3.7, "direction_deg": 239.9, "direction_text": "西南偏南风", "level": 3, "level_text": "微风" }, "air_quality": { "aqi": 68, "level": "良", "level_color": "yellow", "pm25": 27 }, "alert_count": 1 }, "realtime": { /* 彩云原始实时数据,结构同summary部分但字段更细 */ }, "minutely": { /* 未来2分钟级降水 */ }, "hourly": [ /* 逐小时列表 */ ], "daily": [ /* 逐天列表 */ ], "alerts": [ { "alert_id": "110101...", "province": "北京市", "city": "北京城区", "county": "东城区", "title": "东城区气象台发布大风蓝色预警[IV/一般]", "color": "蓝色", "level": "一般", "status": "预警中", "pub_time": "2026-05-05 16:46:00", "source": "国家预警信息发布中心", "description": "预计 6 日早晨至午后...有 3-4 级偏北风,阵风 6-7 级..." } ], "forecast_keypoint": "未来两小时不会下雨,放心出门" } } } ]核心字段说明
- summary:顶层最简摘要,适用于天气卡片展示,避免遍历子结构。
- realtime:实时详细数据(湿度、气压、紫外线等),与summary本质相同但字段完整。
- minutely:包含
precipitation_2h数组(2小时分钟级降水)及probability等。 - hourly:逐小时对象,包含
temperature、skycon、wind、humidity、precipitation及description(中文化短语)。 - daily:逐日对象,包含
temperature(最大最小)、sunrise/sunset、life_index(舒适度、洗车、穿衣等)。 - alerts:预警数组,
color(蓝/黄/橙/红)和level(一般/较重/严重/特别严重)已标准化提取。 - forecast_keypoint:自然语言总结,如“未来两小时不会下雨”。
常见错误与处理
| 错误码 | 含义 | 排查方向 | |--------|------|----------|\n| code!=0 | 业务错误,查看msg字段 | 可能是参数错误、查询频率过高、城市不存在 | | 400 | 请求参数格式错误 | 检查city/location是否合法,经纬度格式为lng,lat,无空格 | | 403 | 鉴权失败或IP受限(匿名额度超限) | 检查X-API-Key是否正确,或增大请求间隔 | | 429 | QPS超限(超过10次/秒) | 增加本地限流(如1秒最多10次)或改用更短的Type降低调用量 | | 500 | 服务端异常(极少出现) | 稍后重试,若持续报错可检查API文档页状态 |
调试建议:先用curl -v查看完整响应头,确认是否命中代理缓存;再用-w "\n%{http_code}"获取状态码。
工程化注意事项
- 缓存策略:实时数据可缓存30~60秒,逐时数据可缓存10~15分钟,逐天数据可缓存1~2小时。使用Redis或本地内存缓存,避免QPS浪费。
- 降级与容错:若API返回非200或code非0,应使用上次缓存数据作为降级;若连续失败超过3次,触发静默失败,而非反复重试。
- 频率控制:在前端暴露天气接口时,务必将调用代理到后端,由后端限流(如单用户每秒最多1次),避免前端直接调用导致Key泄露或匿名额度耗尽。
- 数据标准化:
summary字段已提供中文化转换,可直接用于UI渲染;若需更精细的风向度转化为中文,注意wind.direction_text就是16方位字符串。 - 位置兜底:当city参数未匹配到内置140城市时,会调用Open-Meteo作为回退,此时返回的
location.city可能为空或兜底结果,建议前端显示为用户输入的城市名。 - 预警时间处理:
pub_time为北京时间字符串,可转为时间戳后做排序和过期判断(通常预警有效期72小时内)。
参考文档
- 原始文档及更新日志:https://apizero.cn/aidocs/weather/raw.md
- 接口在线调试:https://v1.apizero.cn/api/weather(浏览器直接打开可看效果,但推荐用curl测试完整结构)