当前位置: 首页 > news >正文

Nodejs通过get请求获取api.open-meteo.com网站的天气数据

Nodejs通过get请求获取api.open-meteo.com网站的天气数据

继上一篇C++中使用cpp-httplib和nlohmann_json库实现http请求获取天气数据,想到使用Node.js获取天气数据更为方便,于是通过Node.js实现了get和post请求获取天气数据。
通常在开发GET和POST请求获取服务器上的数据前,我们可以根据Postman 或者curl`工具模拟http请求,如下图所示使用Postman get请求获取天气数据:
Postman get请求获取天气数据

以下是基于Node.js的示例代码,展示了如何使用http请求模块发送GET POST 请求获取天气数据,对应代码如下:

const http = require('http');
const { hostname } = require('os');// Function to make a GET request to a weather API
function getWeather() {const options = {hostname: 'api.open-meteo.com',port: 80,path: '/v1/forecast?latitude=37.8136&longitude=144.9631&current_weather=true',method: 'GET'};const req = http.request(options, (res) => {let data = '';// Collect data chunksres.on('data', (chunk) => {data += chunk;});// Process the complete responseres.on('end', () => {console.log('GET Response:');console.log(JSON.parse(data));});});req.on('error', (error) => {console.error(`Error: ${error.message}`);});req.end();
}// Function to make a POST request to a weather API
function postWeather() {const postData = JSON.stringify({latitude: 37.8136,longitude: 144.9631,current_weather: true});const options = {hostname: 'api.open-meteo.com',port: 80,method: 'POST',headers: {'Content-Type': 'application/json','Content-Length': Buffer.byteLength(postData)}};const req = http.request(options, (res) => {let data = '';// Collect data chunksres.on('data', (chunk) => {data += chunk;});// Process the complete responseres.on('end', () => {console.log('POST Response:');console.log(JSON.parse(data));});});req.on('error', (error) => {console.error(`Error: ${error.message}`);});// Write data to request bodyreq.write(postData);req.end();
}// Call the functions
getWeather();
postWeather();

以下是基于 Node.js 的示例代码,展示了如何使用 http 模块发送 GET 和 POST 请求来获取天气数据:


说明

  1. GET 请求:

    • 使用 http.request 方法发送 GET 请求。
    • options 中的 path 包含查询参数(纬度、经度等)。
    • 响应数据通过 res.on('data') 收集,并在 res.on('end') 中处理。
  2. POST 请求:

    • 使用 http.request 方法发送 POST 请求。
    • postData 是一个 JSON 对象,包含请求体数据。
    • 设置 Content-TypeContent-Length 头部以匹配 POST 数据。
  3. 错误处理:

    • 使用 req.on('error') 捕获请求中的错误。
  4. 天气 API:

    • 示例中使用了 api.open-meteo.com 的免费天气 API。

运行代码

  1. 保存文件
    将代码保存为 getWeather.js

  2. 运行脚本
    在终端中运行:

    node getWeather.js
    
  3. 输出结果

    • GET 请求的天气数据会打印到控制台。
    • POST 请求的响应数据也会打印到控制台。

示例输出

GET Response:
{latitude: 37.8,longitude: 144.9375,generationtime_ms: 0.07319450378417969,utc_offset_seconds: 0,timezone: 'GMT',timezone_abbreviation: 'GMT',elevation: 0,current_weather_units: {time: 'iso8601',interval: 'seconds',temperature: '°C',windspeed: 'km/h',winddirection: '°',is_day: '',weathercode: 'wmo code'},current_weather: {time: '2025-11-01T12:15',interval: 900,temperature: 19.3,windspeed: 39.3,winddirection: 284,is_day: 0,weathercode: 0}
}POST Response:
{ reason: 'Not Found', error: true }

注意事项

  • 如果天气 API 不支持 POST 请求,POST 请求可能会返回错误(如上例)。
  • 如果需要更高级的 HTTP 功能,建议使用 axiosnode-fetch 模块。
http://www.dtcms.com/a/557925.html

相关文章:

  • 做网站的工作室建设360导航网站的目的是什么
  • 广西建设工程协会网站查询网站图标ico 设置
  • 使用Java通过get请求获取api.open-meteo.com网站的天气数据
  • 网页商城设计商城网站设计案例进入wordpress后
  • ps制作个人网站佛山外发加工网
  • 建设电影网站论文上海做网站哪里好
  • 北京地下室电梯井渗漏水防水堵漏维修施工解决方案
  • 存储设备的“分配单元大小“(allocation unit size)是什么?
  • 婚纱网站页面设计图片保定模板做网站
  • 506-Spring AI Alibaba Multi-Agent OpenManus 功能完整案例
  • 做的比较好的网站有哪些从化区住房和建设局网站
  • 软件测试大赛web测试-python【备赛4 复盘待完善】
  • 37_AI智能体工具插件之Agent决策状态模型和JSON输出解析器数据模型设计实战
  • <项目代码>yolo织物缺陷识别<目标检测>
  • 构建AI智能体:八十一、SVD模型压缩的艺术:如何科学选择K值实现最佳性能
  • Megatron-LM张量并行详解:原理、实现与应用
  • systemd timer定时任务 —— 筑梦之路
  • win7 iis7 添加网站百度竞价网站建设
  • js网站分页怎么做wordpress怎么保存图片
  • linux-系统启动-8
  • 数码商城系统|电子|基于SprinBoot+vue的商城推荐系统(源码+数据库+文档)
  • 第10讲:导航与路由:在页面间穿梭
  • Linux 磁盘空间“消失”之谜:文件已删,空间却不释放?
  • P1990 覆盖墙壁(dp)
  • 计算机操作系统理论学习
  • 胶州建网站推广游戏的平台
  • 未来之窗昭和仙君(四十九)集成电路芯片生产管理出库——东方仙盟筑基期
  • 哈尔滨公司网站建设科技企业网站源码
  • 行业网站推广怎么做wordpress-3.7
  • Pandas 简介与安装