6

如何在 Go 中构建一个基本的 Web 服务器

 2 years ago
source link: https://www.51cto.com/article/719125.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何在 Go 中构建一个基本的 Web 服务器

作者:Linux迷 2022-09-20 08:43:37
Go 强大的内置包集合使其成为 Web 编程的优秀选择,本文将教你如何用 Go 编写一个基本的 Web 服务器。
16383a0029134349b540776c453a09e439f234.jpg

Go 是一种大有前途的编程语言,用于构建现代 Web 应用程序和系统软件。它一发布就席卷了科技行业,并为 Docker、Kubernetes、Terraform、Dropbox 和 Netflix 等服务提供支持。

此外,Go 强大的内置包集合使其成为 Web 编程的绝佳选择。本文将教你如何用 Go 编写一个基本的 Web 服务器。

导入必要的包

net/HTTP 包提供了创建 Web 服务器和客户端所需的一切。这个包公开了几个处理 Web 编程的有用函数。

您可以通过在源代码顶部添加以下行来导入它:

import "net/http"

我们还将使用fmt包来格式化字符串,使用log包来处理错误。您可以如上所示单独导入它们,也可以使用单个导入语句分解所有包:

import (
    "fmt"
    "log"
    "net/http"
)

导入所需的包后,您可以继续编写 main 函数。继续并使用.go扩展名保存源文件。如果您使用的是 Vim,请使用以下命令保存并退出 Vim:

:wq linuxmi.server.go

编写主函数

Go 程序存在于 main 函数中,恰当地命名为“main”。您需要在此处实现服务器调用。在源代码中添加以下行并查看它们的作用:

func main() {
    http.HandleFunc("/", index)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

我们使用func关键字定义主函数。Go 对左大括号的放置有严格的规定,因此请确保大括号在正确的行上。main 中的第一条语句定义所有到达根 ( “/” ) 路径的 Web 请求都将由index处理,index 是http.HandlerFunc类型的函数。

第二行通过http.ListenAndServe函数启动 Web 服务器。它向服务器发出信号,以持续侦听主机端口 8080 上的传入 HTTP 请求。需要此函数的第二个参数来阻止程序直到终止。

由于 http.ListenAndServe 总是返回错误,我们将这个调用包装在log.Fatal调用中。此语句记录在服务器端生成的任何错误消息。

实现处理函数

可以看到,主函数调用处理函数索引来处理客户端请求。但是,我们还没有为我们的服务器定义这个函数。

让我们添加必要的语句以使索引函数可用:

func index(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "大家好,欢迎来到Linux迷 %s!", r.URL.Path[1:])
}

此函数采用http.ResponseWriter和http.Request类型的两个不同参数。http.ResponseWriter 参数包含服务器对传入请求的响应,它以 http.Request 对象的形式出现。

fmt 包中的 Fprintf 函数用于显示和操作文本字符串。我们使用它来显示服务器对我们的网络请求的响应。最后,r.URL.Path[1:]组件用于获取根路径之后的数据。

将所有部分加在一起

将所有部分添加在一起后,您的 Go Web 服务器应该已经准备就绪。代码应类似于以下内容:

package main
import (
    "fmt"
    "log"
    "net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "大家好,欢迎来到Linux迷 %s!", r.URL.Path[1:])
}
func main() {
    http.HandleFunc("/", index)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

第一行用于将此 Go Web 服务器代码编译为可执行文件。

11daea417d69c2b91cd321001de0a2dfce5b76.png

使用 Go 构建 Web 服务器

Go 强大的库包便于初学者进行 Web 编程。只需几行代码,您就可以快速开发简单的 Web 服务器。

此外,这种编程语言强大的测试特性也使得敏捷编程方法的实现变得容易。这些是一组基于迭代开发和团队之间广泛协作的软件开发策略。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK