GO语言工程实践课后作业:实现一个简单的Web服务器
实现思路
本次课后作业要求实现一个简单的Web服务器,能够处理基本的HTTP GET请求,并返回静态页面或简单的文本响应。为了实现这一目标,我们需要完成以下几个步骤:
- 初始化Go项目:创建一个新的Go项目目录,并初始化Go模块。
- 引入必要的包:主要需要引入
net/http包,这是Go标准库提供的HTTP服务器和客户端实现。 - 定义处理函数:编写处理HTTP请求的函数,根据请求路径返回不同的响应。
- 设置路由:将处理函数与特定的URL路径关联起来。
- 启动服务器:监听指定的端口,启动HTTP服务器。
代码实现
以下是实现上述功能的Go代码:
go复制代码package main import ( "fmt" "log" "net/http" ) // 处理根路径的请求 func rootHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Welcome to the simple Go web server!") } // 处理静态文件请求 func staticFileHandler(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "./static/index.html") } func main() { // 设置路由 http.HandleFunc("/", rootHandler) http.HandleFunc("/static/", staticFileHandler) // 启动服务器 port := ":8080" fmt.Printf("Starting server on port %s\n", port) if err := http.ListenAndServe(port, nil); err != nil { log.Fatalf("Could not start server: %s\n", err.Error()) } }
路径记录
-
项目目录结构:
复制代码simple-web-server/ ├── go.mod ├── go.sum ├── main.go └── static/ └── index.html -
文件内容:
go.mod:自动生成的Go模块文件,记录了项目依赖。main.go:包含上述代码,实现Web服务器功能。static/index.html:一个简单的HTML文件,用于测试静态文件服务。
运行步骤
- 创建项目目录:在终端中创建
simple-web-server目录并进入。 - 初始化Go模块:运行
go mod init simple-web-server初始化Go模块。 - 编写代码:在
main.go文件中编写上述代码。 - 创建静态文件:在
static目录下创建一个名为index.html的文件,并添加一些简单的HTML内容。 - 运行服务器:在终端中运行
go run main.go启动服务器。 - 访问服务器:在浏览器中访问
http://localhost:8080和http://localhost:8080/static/,分别查看不同的响应。
通过以上步骤,我们成功实现了一个简单的Web服务器,能够处理基本的HTTP GET请求,并返回静态页面或简单的文本响应。这不仅加深了对Go语言HTTP包的理解,也锻炼了工程实践能力。