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