跳到主要内容
版本:v2.5

常见问题

支持城市编码调用 API 吗?

劝解书

如果可以获取到经纬度,推荐使用经纬度直接查询天气,全球统一格式。 如果你要显示地址,推荐用高德或者谷歌地址 API 来显示地址。

城市编码提供的只是城市中心点的坐标,不代表城市详情,数据的空间精度 很差

劝解无效,确定不想要定位 API,没有经纬度,一定要按照城市名字来查询天气,请往下看。

下载 对照表 文件,调用方式如下

https://api.caiyunapp.com/v2.5/TAkhjf8d1nlSlspN/weather.json?adcode=110100

彩云天气 App 采用了那种地图坐标?

彩云天气 App 使用 GCJ-02 坐标系统

彩云天气 API 是否支持返回历史数据

API 接口仅支持返回过去一天的历史数据,接口默认返回当前时刻到未来的数据。需要调用过去一天的数据,可以在 URL 后加参数 begin=时间戳 即可。

begin 如果传入未来时间会导致数据不准,不要 这么操作。

如何正确重试接口

  1. 发起 API 调用
  2. 如果失败,则等待时间随超时次数指数增长
#!/usr/bin/env python3

import time

import requests


URL = "http://api.caiyunapp.com"
MAX_RETRY = 3
data = {}

retry_times = 0
while retry_times <= MAX_RETRY:
try:
data = requests.get(URL).json()
break
except Exception:
print("failed")
retry_times += 1
time.sleep(retry_times*retry_times)
continue

print(data)

任何外部/内部的接口都可能因为各种原因发生请求失败,代码里应做好对应的容错/兜底机制。

按照 99.9% 可用率,一般每 1 万次调用中,有 100 次左右的超时属于正常范围。

额外的超时可能会导致总调用量有小幅度的增长,对计费会有比较轻微的影响。