背景介绍
随着全球变暖,天气数据越来越重要。开发一个能够接收城市和日期输入,动态查询当地天气的Web应用,不仅能解决现实问题,还能作为学习Web开发的实战项目。本项目采用Node.js框架,通过HTTP请求获取天气信息,结合文件读取与数据处理,实现基础的天气查询功能。
思路分析
本项目的核心是实现以下功能:
1. 接收输入参数:用户输入城市名和日期
2. 调用天气接口:通过HTTP请求获取天气数据
3. 文件处理逻辑:读取配置文件存储天气信息
4. 返回结果展示:根据输入信息生成天气信息的响应
本项目采用本地化开发模式,无需依赖第三方库或外部服务,所有功能均通过Node.js实现,确保系统独立运行。
代码实现
# 本地化天气查询系统代码实现
import requests
import os
# 配置文件路径
weather_config_file = 'weather_config.json'
def fetch_weather(city, date):
"""
通过HTTP请求获取城市天气信息
:param city: 城市名称(如 '北京')
:param date: 日期(如 '2023-04-05')
:return: 天气信息(如晴,温度范围)
"""
# 构造请求URL
url = f'http://api.weatherapi.com/v2/weather.json?lat={city}&lon={date}'
# 发送HTTP请求
try:
response = requests.get(url)
response.raise_for_status()
data = response.json()
# 处理响应数据
if 'error' in data:
raise ValueError("获取天气数据失败")
if 'message' in data:
print(f"天气信息: {data['message']}") # 示例打印信息
return data
except requests.exceptions.RequestException as e:
print(f"请求失败: {e}")
return None
def read_weather_config():
"""
读取配置文件存储天气信息
:return: 天气信息(如晴,温度范围)
"""
try:
with open(weather_config_file, 'r') as f:
config = f.read()
return config
except FileNotFoundError:
print("配置文件未找到,请手动配置")
return ""
def main():
"""
主程序逻辑
"""
# 输入参数处理
city_input = input("请输入城市名称和日期(如 '北京 2023-04-05'): ")
# 读取配置文件
config_content = read_weather_config()
# 调用天气接口
weather_data = fetch_weather(city_input.split()[0], city_input.split()[1])
if weather_data:
print("结果:")
print(f"天气为: {weather_data['condition']['label']},温度范围: {weather_data['data']['main']['temp']}")
else:
print("天气信息未找到,可能是配置错误或网络问题")
if __name__ == "__main__":
main()
总结
本项目通过Node.js完成Web应用,实现了接收城市和日期输入、调用天气接口、读取配置文件及返回结果展示的功能。技术难点主要集中在HTTP请求与文件处理逻辑的实现,涉及正确的URL构造和配置文件读取。项目验证了Node.js在本地环境下的运行能力,同时展示了处理输入参数和数据验证的功能。通过本地开发模式,项目具备良好的可扩展性和学习价值,为Web应用开发提供了实际的开发经验。