“青训营X豆包MarsCode 技术训练营第十一课 | 豆包MarsCode AI 刷题”

64 阅读2分钟

GO语言工程实践课后作业:实现一个简单的Web服务器

实现思路

本次课后作业要求实现一个简单的Web服务器,能够处理基本的HTTP GET请求,并返回静态页面或简单的文本响应。为了实现这一目标,我们需要完成以下几个步骤:

  1. 初始化Go项目:创建一个新的Go项目目录,并初始化Go模块。
  2. 引入必要的包:主要需要引入net/http包,这是Go标准库提供的HTTP服务器和客户端实现。
  3. 定义处理函数:编写处理HTTP请求的函数,根据请求路径返回不同的响应。
  4. 设置路由:将处理函数与特定的URL路径关联起来。
  5. 启动服务器:监听指定的端口,启动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())  	}  }

路径记录

  1. 项目目录结构

    复制代码simple-web-server/  ├── go.mod  ├── go.sum  ├── main.go  └── static/      └── index.html
    
  2. 文件内容

    • go.mod:自动生成的Go模块文件,记录了项目依赖。
    • main.go:包含上述代码,实现Web服务器功能。
    • static/index.html:一个简单的HTML文件,用于测试静态文件服务。

运行步骤

  1. 创建项目目录:在终端中创建simple-web-server目录并进入。
  2. 初始化Go模块:运行go mod init simple-web-server初始化Go模块。
  3. 编写代码:在main.go文件中编写上述代码。
  4. 创建静态文件:在static目录下创建一个名为index.html的文件,并添加一些简单的HTML内容。
  5. 运行服务器:在终端中运行go run main.go启动服务器。
  6. 访问服务器:在浏览器中访问http://localhost:8080http://localhost:8080/static/,分别查看不同的响应。

通过以上步骤,我们成功实现了一个简单的Web服务器,能够处理基本的HTTP GET请求,并返回静态页面或简单的文本响应。这不仅加深了对Go语言HTTP包的理解,也锻炼了工程实践能力。