Go语言实战:创建一个简单的 HTTP 服务器

简介: 本篇是《Go语言101实战》系列之一,讲解如何使用Go构建基础HTTP服务器。涵盖Go语言并发优势、HTTP服务搭建、路由处理、日志记录及测试方法,助你掌握高性能Web服务开发核心技能。

 

本文是《Go语言100个实战案例》系列之《网络与并发篇》的第一篇。我们将从零开始,用Go语言构建一个基础的 HTTP 服务器,掌握 Go 在服务端开发中的关键能力。


一、为什么选择 Go 来开发 HTTP 服务?

Go 语言天生支持网络编程,其标准库 net/http 内置了完整的 HTTP 协议处理能力,语法简洁、性能优越,非常适合用于构建高性能 Web 服务和 API 服务。

优势包括:

  • • 内置 HTTP 支持
  • • 简洁的并发模型(Goroutine)
  • • 部署简单,编译为单个可执行文件
  • • 高性能、跨平台

二、基础目标:构建一个本地 HTTP 服务

✅ 功能需求:

  • • 启动后监听本地端口(例如 8080)
  • • 支持根路径 / 请求并返回“Hello, World!”
  • • 支持 /time 请求,返回当前服务器时间
  • • 日志输出每个请求的路径和来源 IP

三、完整示例代码

package main
import (
    "fmt"
    "log"
    "net/http"
    "time"
)
// 根路径处理器
func helloHandler(w http.ResponseWriter, r *http.Request) {
    log.Printf("访问路径:%s,来源:%s\n", r.URL.Path, r.RemoteAddr)
    fmt.Fprintf(w, "Hello, World! 👋")
}
// /time 路径处理器
func timeHandler(w http.ResponseWriter, r *http.Request) {
    log.Printf("访问路径:%s,来源:%s\n", r.URL.Path, r.RemoteAddr)
    currentTime := time.Now().Format("2006-01-02 15:04:05")
    fmt.Fprintf(w, "当前服务器时间:%s", currentTime)
}
func main() {
    // 注册路由处理器
    http.HandleFunc("/", helloHandler)
    http.HandleFunc("/time", timeHandler)
    // 启动 HTTP 服务
    port := ":8080"
    log.Printf("启动 HTTP 服务,监听端口 %s\n", port)
    err := http.ListenAndServe(port, nil)
    if err != nil {
        log.Fatalf("服务器启动失败:%v", err)
    }
}

四、运行与测试

运行命令:

go run main.go

访问方式:

  1. 1. 打开浏览器访问:
  • • http://localhost:8080/ 会显示 `Hello, World!
  • • http://localhost:8080/time 会显示当前服务器时间
  1. 2. 使用 curl 测试:
curl http://localhost:8080/
curl http://localhost:8080/time

五、进阶建议

这个 HTTP 服务虽然简单,但它是后续进阶的基础。你可以继续扩展它:

  • • 使用 http.ServeMux 自定义路由器
  • • 增加静态文件服务(如 HTML/CSS/JS)
  • • 加入 JSON 接口支持
  • • 加入日志中间件
  • • 将服务并发能力与 Goroutine、Channel 结合

六、小结

通过本篇,你已经成功用 Go 构建了一个完整的 HTTP 服务。这个项目虽然小巧,但是搭建微服务、开发 REST API、构建高并发服务的基础之一。

 

相关文章
|
7月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
8月前
|
Go
如何在Go语言的HTTP请求中设置使用代理服务器
当使用特定的代理时,在某些情况下可能需要认证信息,认证信息可以在代理URL中提供,格式通常是:
553 0
|
5月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
440 10
|
5月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
5月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
599 8
|
5月前
|
存储 监控 安全
阿里云渠道商:云服务器价格有什么变动?
阿里云带宽与存储费用呈基础资源降价、增值服务差异化趋势。企业应结合业务特点,通过阶梯计价、智能分层、弹性带宽等策略优化成本,借助云监控与预算预警机制,实现高效、可控的云资源管理。
|
5月前
|
弹性计算 运维 安全
区别及选择指南:阿里云轻量应用服务器与ECS云服务器有什么区别?
阿里云轻量应用服务器适合个人开发者、学生搭建博客、测试环境,易用且性价比高;ECS功能更强大,适合企业级应用如大数据、高流量网站。根据需求选择:轻量入门首选,ECS专业之选。
370 2
|
5月前
|
弹性计算 ice
阿里云4核8G云服务器配置价格:热门ECS实例及CPU处理器型号说明
阿里云2025年4核8G服务器配置价格汇总,涵盖经济型e实例、计算型c9i等热门ECS实例,CPU含Intel Xeon及AMD EPYC系列,月费159元起,年付低至1578元,按小时计费0.45元起,实际购买享折扣优惠。
1633 1
|
5月前
|
存储 弹性计算 安全
阿里云渠道商:新手如何选择阿里云ECS实例?
阿里云ECS凭借弹性扩展、稳定可靠与安全防护,助力企业高效上云。本文系统解析实例规格选择关键因素:业务场景匹配、性能评估、成本优化、地域部署与扩展规划,结合计费模式与实际需求,提供科学选型建议,助您精准匹配资源,提升云上效能。(238字)
|
5月前
|
存储 弹性计算 安全
阿里云渠道商:新手怎么选阿里云ECS实例规格?
本文深入解析阿里云ECS的弹性、稳定与安全优势,详解实例规格选择的关键因素,涵盖应用场景、性能需求、成本预算、地理位置与扩展性,助力用户精准选型,优化业务部署与成本效益。

热门文章

最新文章