适用场景
台风实时路径 API 提供西北太平洋与南海区域的台风实时监测数据,包括活跃台风列表、单个台风完整移动路径(实况点与官方预报点)以及风云卫星云图。该接口适用于以下场景:
- 防灾预警系统:前端可视化展示台风位置、强度与移动趋势,辅助决策。
- 航运与交通调度:获取路径点坐标,评估航线风险。
- 气象数据平台:整合多源数据,提供历史路径与实时监测。
- 移动端与 Web 应用:向用户推送台风动态,提升用户体验。
无论哪种场景,开发者都需要理解接口的调用限制,避免因超限导致请求失败或被暂时封禁。
接口能力边界与调用限制
QPS 与请求频率
根据官方文档,该接口的QPS(每秒查询率)上限为 10,即每秒最多允许 10 次请求。超出此限制的请求将收到429 Too Many Requests状态码(或对应错误响应),服务端会暂时拒绝处理。实测中,如果连续高频发送请求,即使未达到 10 QPS 也可能因突发流量触发限流,建议客户端严格控制请求频率。
注意:不同 API Key 可能对应不同的 QPS 额度。如果你使用了Authorization头进行身份认证(Bearer Token),通常可以获得更高的默认限额;而仅使用X-API-Key的情况下,建议将请求间隔控制在 100 毫秒以上,以降低限流风险。
响应时间与数据时效
台风位置数据来源于官方气象机构(如中国中央气象台、日本气象厅等),发布时间存在一定延迟(通常 10-30 分钟)。接口返回的time_cst字段表示数据采集时刻,并非实时刷新。在设计轮询策略时,应设定合理的刷新间隔(例如每 5 分钟拉取一次最新数据),避免不必要的请求浪费。
参数校验与服务端限流
服务端对请求参数进行严格校验:
action不合法(例如拼写错误)会返回400 Bad Request。id参数在action=detail时缺失或格式错误,同样返回 400。- 超过 QPS 限流时,会返回
429状态码,响应体可能包含重试时间提示。
此外,API 可能设有每日调用总量上限(配额),具体数值与账户类型相关。建议在开发阶段监控请求计数,防止生产环境耗尽配额导致服务中断。
请求参数与鉴权方式
Header 参数
| 参数名 | 必需 | 类型 | 说明 |
|---|---|---|---|
X-API-Key | 是 | string | 你的 API Key,可在账户页面获取。该鉴权方式不依赖登录,适用于快速接入。 |
Authorization | 否 | string | 格式为Bearer <你的 API Key>,登录调用时可提高额度。两者只需提供一个即可。 |
Content-Type | 是 | string | 固定为application/json。 |
注意:官方 curl 示例使用X-API-Key,本文后续示例将沿用该方式。
请求体参数
请求体为 JSON 对象,字段说明如下:
| 字段名 | 类型 | 必需 | 说明 |
|---|---|---|---|
action | string | 否 | 操作类型:list(活跃台风列表)、detail(单台风详情+路径)、images(卫星云图)、all(综合:活跃台风+云图)。默认list。 |
id | string | 条件必需 | 台风 ID,当action=detail或action=images时必填。可从list接口返回的id字段获取。 |
status | string | 否 | 当action=list时使用:active(仅活跃)、all(含已停编)。默认active。 |
limit | number | 否 | 当action=images时使用:返回云图数量,1-50。默认值以文档为准。 |
curl 代码接入示例
获取活跃台风列表
curl -sS \ -X POST \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"action": "list", "status": "active"}' \ "https://v1.apizero.cn/api/typhoon"说明:action=list返回当前所有活跃台风的基本信息,包含id、name_cn、name_en、tc_num以及最新的current位置点。
查询单个台风详情
先获取活跃台风列表,选取其中一个id(例如3257931),然后请求详细信息:
curl -sS \ -X POST \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"action": "detail", "id": "3257931"}' \ "https://v1.apizero.cn/api/typhoon"该请求会返回该台风的完整路径(points数组)、当前状态以及云图数据(如果支持)。
注意:请将YOUR_API_KEY替换为你的真实 API Key。建议从环境变量中读取,避免硬编码。
返回字段解读
成功响应 HTTP 状态码 200,JSON 结构如下:
{ "code": 0, "msg": "成功", "request_id": "abc123", "data": { "id": "3257931", "tc_num": "2609", "name_cn": "巴威", "name_en": "BAVI", "is_active": true, "current": { "grade": "热带风暴", "latitude": 14.2, "longitude": 118.5, "pressure": 1002, "wind_speed": 18, "wind_dir": "西西北", "time_cst": "2026-07-02 08:00", "type": "analysis" }, "point_count": 15, "points": [ { "grade": "热带风暴", "latitude": 14.2, "longitude": 118.5, "pressure": 1002, "wind_speed": 18, "time_cst": "2026-07-02 08:00", "type": "analysis" } ] } }| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 0 表示成功,非零表示错误,详见错误码表。 |
msg | string | 成功时为“成功”,失败时描述原因。 |
request_id | string | 请求唯一标识,可用于跟踪问题。 |
data.id | string | 台风 ID,唯一标识。 |
data.tc_num | string | 台风编号,如“2609”表示2026年第9号台风。 |
data.name_cn | string | 中文名称。 |
data.name_en | string | 英文名称。 |
data.is_active | bool | 是否处于活跃状态(未停编)。 |
data.current | object | 当前最新实况点信息(若台风活跃)。 |
data.current.grade | string | 台风等级,例如“热带风暴”“强热带风暴”“台风”等。 |
data.current.latitude | float | 纬度,保留一位小数。 |
data.current.longitude | float | 经度,保留一位小数。 |
data.current.pressure | int | 中心气压(hPa)。 |
data.current.wind_speed | int | 最大风速(m/s)。 |
data.current.wind_dir | string | 移动方向,如“西西北”。 |
data.current.time_cst | string | 数据时间,CST(北京时间),格式yyyy-MM-dd HH:mm。 |
data.current.type | string | 数据类型:analysis(实况分析)或forecast(预报)。 |
data.point_count | int | 路径点数量(实况+预报)。 |
data.points | array | 路径点列表,每个点结构与current类似,但可能不含wind_dir。顺序按时间升序。 |
当action=images时,data结构略有不同,包含卫星云图 URL 列表,字段以实际返回为准。
常见错误码与处理
| HTTP 状态码 | code字段 | 说明 | 处理建议 |
|---|---|---|---|
| 200 | 0 | 成功 | — |
| 400 | 1001 | 参数错误(如缺少必填字段、字段类型不符) | 检查请求体 JSON 格式及字段必填条件。 |
| 401 | 1002 | 鉴权失败(API Key 错误或未提供) | 确认X-API-Key或Authorization是否正确。 |
| 429 | 1003 | 请求过于频繁,触发 QPS 限流 | 降低请求频率,增加间隔(建议至少 100ms),并实现指数退避重试。 |
| 500 | 2000 | 服务端内部错误 | 联系技术支持或稍后重试,建议记录request_id供排查。 |
注意:实际错误码结构可能因 API 版本略有差异,请以最新文档为准。
工程化注意事项
重试与退避策略
对于 429 和 5xx 错误,应实现指数退避重试机制。初始等待 1 秒,失败后加倍等待时间(最大 30 秒),重试次数建议不超过 3 次。超时请求应有超时设置(建议 5 秒),避免线程阻塞。
缓存策略
台风位置数据更新频率较低(通常 10-30 分钟),建议在客户端缓存list结果 5-10 分钟,避免频繁调用。对于detail请求,如果仅需展示当前路径点,可以只存储路径数组,不必每次重新请求。
并发控制
由于 QPS 仅为 10,若同时有多个业务模块需要调用该接口,应使用信号量或请求队列限制并发数。例如在 Node.js 中使用p-limit,在 Java 中使用Semaphore,确保每秒总请求不超过 8-9 个(留出余量)。
日志与监控
记录每次请求的request_id、响应码、耗时等信息。当连续出现 429 或 500 错误时,应触发告警。同时监控每日请求总量,防止达到配额上限。
参数校验前置
在调用 API 前,客户端先校验请求参数的必要性与格式,避免无效请求浪费配额。例如action=detail时必须提供非空id。
参考文档
- 台风实时路径 API 官方文档
- 原始 API 规范 Markdown