常见问题
支持城市编码调用 API 吗?
劝解书
如果可以获取到经纬度,推荐使用经纬度直接查询天气,全球统一格式。 如果你要显示地址,推荐用高德或者谷歌地址 API 来显示地址。
城市编码提供的只是城市中心点的坐标,不代表城市详情,数据的空间精度 很差。
劝解无效,确定不想要定位 API,没有经纬度,一定要按照城市名字来查询天气,请往下看。
下载:
文件,调用方式如下
https://api.caiyunapp.com/v2.6/TAkhjf8d1nlSlspN/weather.json?adcode=110100
彩云天气 App 采用了那种地图坐标?
彩云天气 App 使用 GCJ-02 坐标系统
彩云天气 API 是否支持返回历史数据
API 接口仅支持返回过去一天的历史数据,接口默认返回当前时刻到未来的数据。需要调用过去一天的数据,可以在 URL 后加参数 begin=时间戳
即可。
begin 如果传入未来时间会导致数据不准,不要 这么操作。
如何正确重试接口
- 发起 API 调用
- 如果失败,则等待时间随超时次数指数增长
py
#!/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 万次调用中,有 10 次左右的超时属于正常范围。
额外的超时可能会导致总调用量有小幅度的增长,对计费会有比较轻微的影响。