历史天气查询接口说明:参数设计、返回字段与多语言调用示例

简介: 历史天气查询接口提供按地区查询历史气象数据的能力,支持通过地名、地区代码、经纬度等多种维度定位目标区域。返回数据涵盖指定时间段内的每日天气记录,包括最高/最低气温、天气状况、风向风力等要素,部分城市还支持空气质量指数(AQI)返回。数据最早可追溯至 2011 年 1 月,覆盖全国 3000 余个区县及以上城市。本文介绍接口参数设计、返回字段结构及 Python/Java/JavaScript/PHP 多语言调用示例,并梳理常见错误码与排查方法。

历史天气查询接口说明:参数设计、返回字段与多语言调用示例

一、接口简介

历史天气查询接口提供按地区查询历史气象数据的能力,支持通过地名、地区代码、经纬度、IP 地址、景点名称、区号邮编等多种维度定位目标区域。返回数据涵盖指定时间段内的每日天气记录,包括最高/最低气温、天气状况、风向风力等要素,部分城市还支持空气质量指数(AQI)返回。数据最早可追溯至 2011 年 1 月,覆盖全国 3000 余个区县及以上城市,更新周期约 30 分钟,适用于能源调度、农业管理、旅游规划、智能硬件、交通出行等多个业务场景。

二、核心能力

能力项 说明
查询维度 支持 area(地名)、areaCode(地区代码)、location(经纬度)、ip(IP 地址)、scenic(景点名称)、areacode(区号邮编)等多种定位方式
时间范围 支持按月份批量查询(month),或指定起止日期(startDate ~ endDate)进行区间查询
数据深度 历史数据最早可查 2011 年 1 月,覆盖近 15 年气象记录
返回粒度 每日一条记录,包含气温、天气状况、风向风力等基础要素
空气质量 部分城市数据包含 AQI 指数及空气质量等级
覆盖范围 全国 3000+ 区县及以上城市,精度达县区级

三、适用场景

  • 能源与电力:历史气温数据辅助预测用电负荷、制定供暖/制冷调度方案
  • 农业管理:结合历史气象数据复盘作物生长周期、评估灾害风险
  • 旅游与出行:为行程规划提供目的地历史气候参考
  • 智能硬件:智能家居设备根据历史温度曲线优化空调/新风策略
  • 交通物流:极端天气复盘辅助运力调度与路径规划
  • 数据分析:作为数据源接入报表系统,支撑趋势分析与时序可视化

四、功能特点

特点 描述
多条件定位 area / areaCode 二选一即可,重名城市优先以 code 为准,提高查询准确性
灵活时间粒度 支持整月查询(month)或自定义日期区间(startDate ~ endDate),按需取数
县区级覆盖 数据精确到区县级别,优于多数仅覆盖地市级数据的接口
长期历史回溯 数据回溯至 2011 年,满足多年对比分析需求
标准 JSON 返回 返回格式统一,字段结构清晰,便于各语言解析
APPCODE 鉴权 通过 Aliyun API Gateway 简单身份认证,无需签名复杂度

五、操作流程

5.1 接入准备

  1. 在阿里云云市场开通商品(cmapi010812),获取 AppCode
  2. 将 AppCode 填入请求 Header:Authorization: APPCODE <your_appcode>
  3. 确定查询维度(area 或 areaCode)及时间范围(month 或 startDate/endDate)

5.2 请求参数

参数名 类型 必填 说明 示例值
area string 否 地区名称,与 areaCode 二选一 北京
areaCode string 否 地区代码,优先级高于 area 101010100
month string 否 查询月份,格式 yyyyMM,与 startDate/endDate 二选一 202406
startDate string 否 开始日期,格式 yyyyMMdd 20240601
endDate string 否 结束日期,格式 yyyyMMdd 20240630

注意:area 与 areaCode 至少传入一个;month 与 startDate/endDate 至少传入一个。若两者均传入,以 month 优先。

5.3 调用方式

GET https://ali-weather.showapi.com/weatherhistory
Header: Authorization: APPCODE <your_appcode>
Query: area=北京&month=202406

配图:接入流程图

六、返回字段说明

6.1 系统级字段

字段 类型 说明
showapi_res_code int 返回码,0 表示成功
showapi_res_error string 错误信息,成功时为空
showapi_res_id string 请求唯一标识
showapi_fee_num int 本次调用扣费次数

6.2 业务字段(showapi_res_body 内)

字段 类型 说明
area string 查询的地区名称
areaid string 地区 ID(保留字段)
list array[] 每日天气记录数组
list[].date string 日期,格式 yyyy-MM-dd
list[].max_temp string 最高气温,单位 ℃
list[].min_temp string 最低气温,单位 ℃
list[].weather string 天气状况,如「晴」「多云」「雨」
list[].wind_direction string 风向,如「东风」「东南风」
list[].wind_power string 风力,如「3-4 级」
list[].aqi string 空气质量指数(部分城市支持)
list[].aqi_level string 空气质量等级(部分城市支持)
list[].aqi_info string 空气质量描述(部分城市支持)

配图:返回结构图

七、在线调试示例

7.1 cURL 示例

curl -X GET "https://ali-weather.showapi.com/weatherhistory?area=北京&month=202406" \
  -H "Authorization: APPCODE your_appcode"

7.2 成功响应示例

{
   
  "showapi_res_code": 0,
  "showapi_res_error": "",
  "showapi_res_id": "a1b2c3d4e5f6",
  "showapi_fee_num": 1,
  "showapi_res_body": {
   
    "area": "北京",
    "areaid": "101010100",
    "list": [
      {
   
        "date": "2024-06-01",
        "max_temp": "31",
        "min_temp": "20",
        "weather": "晴",
        "wind_direction": "南风",
        "wind_power": "3-4 级",
        "aqi": "45",
        "aqi_level": "优",
        "aqi_info": "空气质量令人满意,基本无空气污染"
      },
      {
   
        "date": "2024-06-02",
        "max_temp": "33",
        "min_temp": "22",
        "weather": "多云",
        "wind_direction": "东南风",
        "wind_power": "2-3 级",
        "aqi": "62",
        "aqi_level": "良",
        "aqi_info": "空气质量可接受,某些污染物可能对极少数异常敏感人群健康有较弱影响"
      }
    ]
  }
}

配图:在线调试截图

八、多语言调用示例

8.1 Python

import urllib.request
import urllib.parse
import json

url = "https://ali-weather.showapi.com/weatherhistory"
params = urllib.parse.urlencode({
   
    "area": "北京",
    "month": "202406"
}).encode("utf-8")

req = urllib.request.Request(url, data=params)
req.add_header("Authorization", "APPCODE your_appcode")

with urllib.request.urlopen(req) as resp:
    data = json.loads(resp.read().decode("utf-8"))
    print(json.dumps(data, ensure_ascii=False, indent=2))

8.2 Java

import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class WeatherHistory {
   
    public static void main(String[] args) throws Exception {
   
        String urlStr = "https://ali-weather.showapi.com/weatherhistory?area=%E5%8C%97%E4%BA%AC&month=202406";
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Authorization", "APPCODE your_appcode");

        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = br.readLine()) != null) {
   
            sb.append(line);
        }
        br.close();
        System.out.println(sb.toString());
    }
}

8.3 JavaScript (Node.js)

const https = require('https');

const options = {
   
  hostname: 'ali-weather.showapi.com',
  path: '/weatherhistory?area=%E5%8C%97%E4%BA%AC&month=202406',
  method: 'GET',
  headers: {
   
    'Authorization': 'APPCODE your_appcode'
  }
};

const req = https.request(options, (res) => {
   
  let data = '';
  res.on('data', (chunk) => {
    data += chunk; });
  res.on('end', () => {
    console.log(data); });
});

req.on('error', (e) => {
    console.error(e); });
req.end();

8.4 PHP

<?php
$url = 'https://ali-weather.showapi.com/weatherhistory?area=北京&month=202406';
$headers = array(
    'Authorization: APPCODE your_appcode'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

配图:多语言示例

九、调用限制与服务规范

项目 说明
请求方式 GET
返回格式 JSON
数据更新频率 约 30 分钟/次
单账户 QPS 以控制台实时配置为准
每日调用上限 以控制台实时配置为准
调用规则 HTTP 200 响应时扣减调用次数,非 200 不扣费 # @marketing-ok

高频注意事项:

  • 每次请求最多返回一个月数据(month 模式)或指定区间数据(startDate/endDate 模式)
  • 建议对查询结果做本地缓存,避免重复请求同一时间段
  • 批量查询多个城市时,建议串行调用并控制间隔,避免触发限流

十、服务指标参考

指标 参考值
平均响应时间 < 500ms
数据刷新周期 约 30 分钟
城市覆盖率 全国 3000+ 区县及以上
历史数据起始时间 2011 年 1 月
可用性 以控制台实时配置为准

以上指标为参考值,实际表现可能因网络环境、服务器负载等因素有所波动。

十一、能力边界与服务范围

11.1 支持范围

  • 中国境内全部区县及以上城市
  • 历史数据:2011 年 1 月至今(部分早期城市数据可能不完整)
  • 查询维度:地名(area)/ 地区代码(areaCode)/ 经纬度(location)/ IP 地址(ip)/ 景点名称(scenic)/ 区号邮编(areacode)

11.2 不支持范围

  • 境外城市天气数据
  • 小时级历史数据(仅支持每日一条记录)
  • 未来天气预报(本接口专供历史数据查询)
  • 实时天气(请使用独立的实时天气接口)

11.3 免责声明

  • 气象数据仅供参考,不作为气象预报或业务决策的唯一依据
  • 部分偏远地区或早期数据可能存在缺失或延迟
  • 接口返回值以实际调用结果为准,服务商不对第三方使用后果承担责任

十二、错误码说明

错误码 错误信息 原因 解决办法
0 - 成功 -
-1 request is forbidden AppCode 无效或未开通 检查 AppCode 是否正确,确认商品已开通
-2 appKey err 鉴权失败 检查 Authorization Header 格式是否正确
-3 no data 无符合条件的数据 检查 area/areaCode 是否存在,month/日期范围是否有效
-4 param error 参数格式错误 检查参数格式:month 应为 yyyyMM,日期应为 yyyyMMdd
-5 quota exceeded 调用次数超限 联系服务商扩容或等待次日重置
-6 rate limited 触发限流 降低调用频率,增加请求间隔

配图:错误码排查

十三、选型思路

针对历史天气数据查询需求,选型时可考虑以下维度:

维度 说明
数据深度 是否支持 2011 年至今的长周期历史数据
覆盖精度 是否支持区县级别,而非仅地级市
查询灵活性 是否支持多种定位方式(地名/code/经纬度/IP 等)
返回字段完整度 是否包含气温、天气、风向风力、AQI 等核心字段
调用成本 单次扣费规则、超限额处理方式 # @marketing-ok
稳定性 历史调用成功率、响应时间波动范围

十四、错误排查清单

现象 可能原因 排查步骤
返回空 list 地区不存在或日期范围无数据 先确认 area/areaCode 是否正确;尝试缩小日期范围
showapi_res_code 非 0 鉴权或参数问题 检查 AppCode;核对参数格式(month/yyyyMMdd)
响应超时 网络或限流 检查网络连通性;降低调用频率后重试
部分城市无 AQI 数据 该城市未接入空气质量监测 正常现象,可降级处理或使用天气数据本身

十五、常见问题(FAQ)

Q:如何查询某个城市的历史天气?
A:传入 area(地名)或 areaCode(地区代码)加 month(月份)即可,例如 area=北京&month=202406。

Q:历史数据最早可以查到哪一年?
A:最早可追溯至 2011 年 1 月,但早期数据完整性因城市而异。

Q:支持查询具体某几天的数据吗?
A:支持。使用 startDate 和 endDate 指定日期区间,格式为 yyyyMMdd,例如 startDate=20240601&endDate=20240615。

Q:area 和 areaCode 应该用哪个?
A:两者均可,但建议优先使用 areaCode,因为重名城市较多时使用 code 更准确。

Q:返回数据中的 AQI 字段是否所有城市都有?
A:不是。仅部分配备空气质量监测站的城市会返回 AQI 数据,未覆盖城市该字段为空。

Q:接口支持哪些查询维度?
A:支持地名(area)、地区代码(areaCode)、经纬度(location)、IP 地址(ip)、景点名称(scenic)、区号邮编(areacode)六种定位方式。

Q:每天可以调用多少次?
A:每日调用上限以控制台实时配置为准,额度因套餐档位而异。# @marketing-ok

Q:非 200 响应会扣费吗?
A:不会。仅当 HTTP 响应状态码为 200 时扣减调用次数。

十六、内容小结

历史天气查询接口提供稳定、覆盖广的历史气象数据服务能力,支持多种定位维度和灵活的时间范围查询,数据可追溯至 2011 年,覆盖全国 3000+ 区县及以上城市。接口采用 APPCODE 简单鉴权,返回标准 JSON 格式,便于各语言快速接入。

接入时建议注意:优先使用 areaCode 而非 area 避免重名歧义;批量查询多城市时做好结果缓存以控制调用频次;对于无 AQI 数据的城市做好字段容错处理。

本文档仅供参考,接口参数与返回结构以实际调用结果为准。

相关文章
|
12月前
|
架构师 关系型数据库 MySQL
【Java架构师体系课 | MySQL篇】③ Explain执行计划详解
Explain用于分析SQL执行计划,通过模拟优化器行为揭示查询性能瓶颈。它展示索引使用、扫描行数等信息,帮助优化查询语句,提升数据库效率。
810 6
【Java架构师体系课 | MySQL篇】③ Explain执行计划详解
|
22天前
|
缓存 JSON 自然语言处理
ICP 备案域名查询接口接入指南|输入域名实时核验备案状态,获取主办单位与备案号
本文介绍 ICP 备案域名查询接口的接入方法:输入一个域名,通过 GET 请求与 Authorization: APPCODE 鉴权,返回该域名的备案信息,包括备案号、主办企业、网站名、备案地址、更新时间与备案类型。正文梳理了从开通服务、获取 AppCode、发起调用到解析结果的完整流程,给出 Python/Java/PHP/Node.js 多语言调用示例、返回 JSON 结构与字段含义、在线调试方法,并覆盖调用限制与规范、能力边界与免责、错误码排查及工程化接入建议(参数前置校验、结果缓存、频控退避、熔断降级),适合作为风控、尽调、合规监测与备案数据支撑场景的工程参考。
329 0
ICP 备案域名查询接口接入指南|输入域名实时核验备案状态,获取主办单位与备案号
|
13天前
|
缓存 自然语言处理 Java
坐标系转换接口说明:WGS84 / GCJ02 / BD09 互转、参数与调用示例
本教程讲解一套坐标系转换与地理编码接口的用法:支持 WGS84(GPS)、GCJ02(国测局加密坐标)、BD09(百度坐标)三种坐标系互转,并提供经纬度转地址(逆地理编码)与地址转经纬度(地理编码)两个方向。文章覆盖接入流程、参数与 from 取值对照、返回字段结构、多语言调用示例、在线调试实录、调用限制与计次规则、能力边界与免责、错误码排查表,并附工程最佳实践。
165 0
坐标系转换接口说明:WGS84 / GCJ02 / BD09 互转、参数与调用示例
|
2月前
|
存储 缓存 JSON
身份证二要素核验接口接入指南:参数设计、调用示例与常见问题
本文面向需要在业务系统中校验姓名与身份证号码是否一致的开发者,介绍身份证二要素核验接口的能力、参数设计、接入流程与调用规范。接口通过 AppCode 鉴权,以 GET 方式调用,Query 携带 name 与 idcard 两个参数;校验一致时返回生日、性别、籍贯等附加信息,不一致时返回明确失败标识。文章给出多语言调用示例、返回结构说明、错误码排查思路,以及参数前置校验、频控幂等、重试降级、合规脱敏等工程实践,供在金融、电商、社交、政务等实名核验场景中落地参考。
177 0
身份证二要素核验接口接入指南:参数设计、调用示例与常见问题
|
15天前
|
存储 缓存 JavaScript
实名认证接口技术解析:二要素与三要素核验的接入流程、参数设计与工程实践
梳理实名认证类接口的技术实现:二要素(姓名+身份证)、三要素(姓名+身份证+手机号)核验的能力边界、请求参数、鉴权方式与返回结构,并给出参数前置校验、幂等、重试、结果缓存及数据合规方面的工程实践,供接入方参考。
154 0
|
2月前
|
存储 JSON 文字识别
增值税发票验真接口-查验平台‌和‌商业API接口
本文围绕增值税发票验真接口展开技术解析。接口基于OCR与联网比对技术,支持将发票图片以Base64字符串或可访问地址两种方式提交,自动识别票面发票代码、号码、开票日期、金额、税额、价税合计及购销方信息等关键字段,并与税务登记信息在线比对,返回验真结果。文中完整介绍接口能力范围、适用场景、五步接入流程,给出cURL、Python、Java、Node.js多语言调用示例与统一JSON返回结构,梳理调用限制、图片质量要求与凭证安全管理,并以网关错误码表、业务错误层级与常见故障速查表覆盖排查路径,最后以技术FAQ解答高频问题。适合财务系统、报销审核、会计入账等场景的开发者参考集成。
272 0
|
2月前
|
存储 缓存 自然语言处理
身份证二要素实名认证接口|姓名 + 身份证号一致性核验方案,快速完成业务实名核验接入
本文以云市场身份证二要素实名认证接口为对象,介绍姓名与身份证号一致性核验的完整接入方案:接口参数设计与两种鉴权方式(APPCODE 简单认证、AppKey/AppSecret 签名认证)、多语言调用示例、返回结构解析与业务错误码排查(0 匹配、1 不匹配、2 无此号码、12 号码不合法、101/103 频控),以及前置校验、同证件 60 秒冷却与 24 小时级频控、敏感信息脱敏存储等工程实践要点,适合需要在注册、开卡、信贷、政务办事等流程中落地实名核验环节的开发者参考。
856 0
身份证二要素实名认证接口|姓名 + 身份证号一致性核验方案,快速完成业务实名核验接入
|
10月前
|
机器学习/深度学习 自然语言处理 安全
2026年语音机器人技术架构解析与企业选型指南
随着AI技术发展,语音机器人已广泛应用于政务、医疗、企业服务等领域。本文从技术架构、核心指标、场景适配等维度,系统解析语音机器人选型关键,助力企业科学决策,推动智能化升级。
|
2月前
|
缓存 自然语言处理 前端开发
日程开发怎么获取当日节假日信息?节假日查询接口使用详解
节假日、调休与工作日判定是日历、排班与行情类应用的基础判断。本文以一个节假日查询接口为例,讲解传入一个日期后返回当日是节假日、工作日还是周末、调休补班安排与可选的节日简介。内容覆盖三类接口(单节假日查询、节假日列表、调休日列表)的能力对比,单查询参数 day、needDesc 与返回字段 type、holiday、weekDay、begin/end、holiday_remark、h 的逐项说明,以及调用示例、在线调试顺序、调用规范、能力边界、错误码与常见问题。鉴权统一采用 AppCode 请求头,凭据仅存服务端;数据自 2018 年起、次年 10—11 月随官方通知更新。
222 0
日程开发怎么获取当日节假日信息?节假日查询接口使用详解
|
2月前
节假日查询接口实践:快速查询 2026 国庆假期与调休信息
以 2026 国庆假期为例,介绍节假日查询接口(编号 894)的返回结构、参数与批量查询方法,便于排班、出行与日程类业务快速核对放假与调休信息。
140 0