写点什么

从零到一:用 Go 语言构建你的第一个 Web 服务

  • 2024-08-07
    福建
  • 本文字数:1911 字

    阅读完需:约 6 分钟

环境搭建

在开始开发之前,我们需要确保本地环境已经安装了 Go 语言开发环境。


安装 Go 语言

可以从Go语言官网下载适合你操作系统的安装包,并按照官网的指南进行安装。


配置开发工具

推荐使用 VS Code 或 GoLand 进行 Go 语言开发。以下是 VS Code 的配置步骤:

  1. 安装 VS Code 编辑器。

  2. 安装 Go 插件:打开 VS Code,进入插件市场,搜索并安装Go插件。

  3. 配置 Go 开发环境:确保 Go 语言的安装路径已添加到系统环境变量中。


创建项目结构

创建一个新的项目文件夹,并初始化 Go 模块。

mkdir simple-web-servercd simple-web-servergo 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) }}
复制代码


运行服务器

在终端中运行以下命令来启动服务器:

go run main.go
复制代码

打开浏览器,访问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

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
从零到一:用Go语言构建你的第一个Web服务_Go_快乐非自愿限量之名_InfoQ写作社区