环境搭建
在开始开发之前,我们需要确保本地环境已经安装了 Go 语言开发环境。
安装 Go 语言
可以从Go语言官网下载适合你操作系统的安装包,并按照官网的指南进行安装。
配置开发工具
推荐使用 VS Code 或 GoLand 进行 Go 语言开发。以下是 VS Code 的配置步骤:
安装 VS Code 编辑器。
安装 Go 插件:打开 VS Code,进入插件市场,搜索并安装Go
插件。
配置 Go 开发环境:确保 Go 语言的安装路径已添加到系统环境变量中。
创建项目结构
创建一个新的项目文件夹,并初始化 Go 模块。
mkdir simple-web-server
cd simple-web-server
go mod init simple-web-server
复制代码
创建 HTTP 服务器
我们将使用 Go 标准库net/http
来创建一个简单的 HTTP 服务器。
引入必要的包
在项目根目录下创建一个名为main.go
的文件,并引入必要的包。
package main
import (
"fmt"
"net/http"
)
复制代码
创建简单的 HTTP 处理函数
我们需要创建一个处理函数来响应 HTTP 请求。
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
复制代码
创建并启动 HTTP 服务器
在main
函数中,我们将创建 HTTP 服务器并指定端口号。
func main() {
http.HandleFunc("/", helloHandler) // 设置路由
fmt.Println("Starting server at port 8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
fmt.Println("Error starting server:", err)
}
}
复制代码
完整的main.go
文件如下:
package main
import (
"fmt"
"net/http"
)
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", helloHandler) // 设置路由
fmt.Println("Starting server at port 8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
fmt.Println("Error starting server:", err)
}
}
复制代码
运行服务器
在终端中运行以下命令来启动服务器:
打开浏览器,访问http://localhost:8080
,你将看到页面显示“Hello, World!”。
路由与请求处理
我们将扩展 HTTP 服务器,增加更多的路由和处理函数。
添加新的路由
添加一个新的处理函数来处理/greet
路径的请求。
func greetHandler(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
if name == "" {
name = "Guest"
}
fmt.Fprintf(w, "Hello, %s!", name)
}
复制代码
注册新的路由
在main
函数中注册新的路由:
func main() {
http.HandleFunc("/", helloHandler) // 设置根路径路由
http.HandleFunc("/greet", greetHandler) // 设置/greet路径路由
fmt.Println("Starting server at port 8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
fmt.Println("Error starting server:", err)
}
}
复制代码
测试新的路由
重新启动服务器,并访问http://localhost:8080/greet?name=Go
,页面将显示“Hello, Go!”。
处理表单数据
我们将扩展服务器以处理 POST 请求和表单数据。
创建 HTML 表单
添加一个新的处理函数来显示 HTML 表单:
func formHandler(w http.ResponseWriter, r *http.Request) {
html := `<html><body>
<form method="POST" action="/submit">
<label for="name">Name:</label>
<input type="text" id="name" name="name">
<input type="submit" value="Submit">
</form>
</body></html>`
fmt.Fprintf(w, html)
}
复制代码
处理表单提交
添加一个新的处理函数来处理表单提交:
func submitHandler(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
return
}
name := r.FormValue("name")
fmt.Fprintf(w, "Form submitted! Hello, %s!", name)
}
复制代码
注册新的路由
在main
函数中注册新的路由:
func main() {
http.HandleFunc("/", helloHandler) // 设置根路径路由
http.HandleFunc("/greet", greetHandler) // 设置/greet路径路由
http.HandleFunc("/form", formHandler) // 设置/form路径路由
http.HandleFunc("/submit", submitHandler) // 设置/submit路径路由
fmt.Println("Starting server at port 8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
fmt.Println("Error starting server:", err)
}
}
复制代码
测试表单功能
重新启动服务器,并访问http://localhost:8080/form
,填写表单并提交,页面将显示“Form submitted! Hello, [你的名字]!”
通过以上步骤,我们已经成功创建了一个简单的 Go Web 服务,并实现了路由处理和表单数据处理。
文章转载自:techlead_krischang
原文链接:https://www.cnblogs.com/xfuture/p/18345352
体验地址:http://www.jnpfsoft.com/?from=infoq
评论