TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

怎样用Golang开发一个天气查询CLI调用公开API的完整流程

2026-02-03
/
0 评论
/
1 阅读
/
正在检测是否收录...
02/03

标题:用Golang打造高效天气查询CLI工具:从API调用到终端交互全指南
关键词:Golang, CLI工具, 天气API, 终端应用, 开发教程
描述:本文详细介绍如何用Golang开发一个基于公开API的天气查询命令行工具,涵盖API选择、请求处理、JSON解析和用户交互设计全流程,提供完整可运行的代码示例。

正文:

在终端爱好者眼中,命令行工具(CLI)是效率的代名词。今天我们将用Golang构建一个能实时查询天气的CLI工具,整个过程就像组装乐高积木——把API调用、数据处理和用户界面完美拼接起来。

第一步:选择合适的天气API

市面上免费的天气API不少,我们选用和风天气(dev.qweather.com)的免费版,它提供每小时级更新且支持中文地理位置。注册后获取API Key(记得选免费开发者套餐),这个密钥相当于我们访问天气数据的"通行证"。

第二步:搭建项目骨架

用Go Modules初始化项目:

mkdir weather-cli && cd weather-cli
go mod init github.com/yourname/weather-cli

创建main.go作为入口文件,同时新建一个api包存放核心逻辑。这种分层结构让代码更易维护——就像把衣服分类收纳,找起来特别顺手。

第三步:封装API请求

在api/weather.go中,我们构造HTTP请求并处理响应。注意加入超时控制,避免网络卡顿导致程序"假死":

func FetchWeather(city, apiKey string) ([]byte, error) {
    client := http.Client{Timeout: 10 * time.Second}
    url := fmt.Sprintf("https://devapi.qweather.com/v7/weather/now?location=%s&key=%s", city, apiKey)
    
    resp, err := client.Get(url)
    if err != nil {
        return nil, fmt.Errorf("请求失败: %v", err)
    }
    defer resp.Body.Close()

    return io.ReadAll(resp.Body)
}

第四步:解析JSON数据

天气API返回的JSON数据像多层嵌套的俄罗斯套娃。定义结构体时要注意字段对应关系:

type WeatherResponse struct {
    Now struct {
        Temp      string `json:"temp"`
        FeelsLike string `json:"feelsLike"` 
        Text      string `json:"text"`
        WindDir   string `json:"windDir"`
    } `json:"now"`
}

解析时使用json.Unmarshal,就像把杂乱的文件归档到标签明确的文件夹中。

第五步:设计终端交互

好的CLI应该像贴心的服务员——清晰告知用户需要什么。我们使用cobra库构建命令系统:

var rootCmd = &cobra.Command{
    Use:   "weather",
    Short: "实时天气查询工具",
    Run: func(cmd *cobra.Command, args []string) {
        if len(args) == 0 {
            fmt.Println("请输入城市名称")
            return
        }
        // 调用API处理逻辑...
    },
}

加上颜色输出让信息更醒目,就像用荧光笔标记重点:

fmt.Printf("\033[1;36m当前温度: %s℃\033[0m\n", weather.Now.Temp)

第六步:处理边界情况

健壮的程序要像老司机一样预见各种意外:
- 城市不存在时显示友好提示
- API调用次数超限时切换备用方案
- 网络中断时自动重试2次

完整组装

最终效果就像瑞士军刀——小巧但功能完备:

./weather 北京
🌞 北京天气实况
温度:28℃(体感30℃)  
天气:晴  
风向:东南风3级

通过这个项目,你不仅学会了API调用和CLI开发,更重要的是掌握了如何把分散的技术点串联成实用工具。下次可以尝试加入天气预报、空气质量检测等功能,让你的命令行工具更加全能。

朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/43133/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. 强强强
    2025-04-07
  2. jesse
    2025-01-16
  3. sowxkkxwwk
    2024-11-20
  4. zpzscldkea
    2024-11-20
  5. bruvoaaiju
    2024-11-14

标签云