Logo
Section 1 / 2

当前天气数据

学习如何获取特定位置的实时天气数据。

导入

当前天气数据

学习如何获取特定位置的实时天气数据。

该API可提供全球任意位置的实时天气数据。这些位置涵盖全球超过20万个城市。该API从多个数据源收集并处理天气信息,包括本地和全球气象模型、卫星、雷达以及广泛的气象站网络。我们可以通过JSON、XML和HTML格式获取此API的数据。

获取实时天气数据

我们通过向以下URI发送GET请求,来获取指定位置的实时天气数据:

https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={APP_ID}

请求参数

参数类型必需性描述
APP_ID字符串必需我们的唯一API密钥。
lat十进制数必需位置的纬度。
lon十进制数必需位置的经度。
mode字符串可选指定API响应的格式,默认值为json,其他可选值为xml和html。
units字符串可选指定测量单位,默认值为standard(标准单位),其他可选值为metric(摄氏度)和imperial(华氏度)。
lang字符串可选用于指定返回结果的语言。

第16–17行: 我们输入47.6038321和-122.3300624,分别对应美国西雅图的地理坐标。

第19–23行: 我们可以将上表中列出的其他可选参数添加到queryParameters对象中,以进一步优化查询结果。

注意: 如需了解如何根据城市名称获取其地理坐标(纬度和经度),请参阅地理编码 API 的相关文档。

运行下方代码,查看输出结果。

1// 在此处导入库 2import fetch from "node-fetch"; 3 4// 在此处定义APP ID 5const APP_ID = '{{APP_ID}}'; 6 7// 在此处定义端点URL 8const url = new URL(`https://api.openweathermap.org/data/2.5/weather`); 9 10// 在此处定义请求头参数 11const headerParameters = { 12 contentType: 'application/json', 13}; 14 15// 在此处定义查询参数 16const lat = 47.6038321; 17const lon = -122.3300624; 18 19const queryParameters = new URLSearchParams({ 20 lat: lat.toString(), 21 lon: lon.toString(), 22 appid: APP_ID 23}); 24 25// 设置API调用选项 26const options = { 27 method: 'GET', 28 headers: headerParameters, 29}; 30 31// 定义发起API调用的函数 32async function getCurrentWeather() { 33 try { 34 url.search = queryParameters; 35 const response = await fetch(url, options); 36 37 // 自定义函数,用于打印API响应 38 printResponse(response); 39 } catch (error) { 40 // 自定义函数,用于打印错误信息 41 printError(error); 42 } 43} 44 45// 调用函数执行API请求 46getCurrentWeather();

让我们快速浏览一下上方小工具中的代码:

  • 第8行: 我们定义了实时天气数据接口的URL。
  • 第32–43行: 我们定义了一个自定义函数getCurrentWeather(),使用fetch发起API请求,并处理可能出现的异常。printResponse()和printError()是用于打印API响应和错误信息的自定义函数。
  • 第46行: 我们调用了getCurrentWeather()函数。

上述代码的输出将显示指定地理坐标的地点的实时天气数据。

响应字段

下面我们深入分析此接口返回的字段内容。

字段类型描述
coord.lat十进制数该位置的纬度。
coord.lon十进制数该位置的经度。
weather.id整数天气状况的唯一标识ID。
weather.main字符串天气状况的分类组。示例值包括Clear(晴朗)、Rain(降雨)、Snow(降雪)和Extreme(极端天气)。
weather.description字符串天气状况的描述文本。
weather.icon字符串天气图标标识ID。
main.temp十进制数实际气温。默认单位为开尔文(Kelvin),metric单位为摄氏度(Celsius),imperial单位为华氏度(Fahrenheit)。
main.feels_like十进制数体感温度。默认单位为开尔文(Kelvin),metric单位为摄氏度(Celsius),imperial单位为华氏度(Fahrenheit)。
main.pressure整数海平面标准大气压,单位为百帕(hPa)。
main.humidity整数湿度百分比,单位为%。
visibility整数平均能见度,单位为米(m)。
wind.speed十进制数风速。默认和metric单位为米/秒(m/s),imperial单位为英里/小时(mph)。
clouds.all整数云量百分比,单位为%。
rain.1h整数过去一小时内降雨量,单位为毫米(mm)。该值可能为NULL。
snow.1h整数过去一小时内降雪量,单位为毫米(mm)。该值可能为NULL。
dt整数数据计算的时间戳,单位为Unix时间(UTC)。
sys.sunrise整数日出时间,单位为Unix时间(UTC)。
sys.sunset整数日落时间,单位为Unix时间(UTC)。
id整数城市的唯一标识ID。
name字符串城市名称。

简介

五天天气预报