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

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

此外,Go强大的内置软件包集合使其成为Web编程的绝佳选择。本文将教您如何在Go中编写基本的Web服务器。

导入必要的程序包

net / HTTP软件包提供了创建Web服务器和客户端所需的一切。该软件包提供了一些用于处理Web编程的有用功能。

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

 import "net/http"

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

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

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

 :wq 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, "Hi there, welcome to %s!", r.URL.Path[1:])
}

此函数接受类型为http.ResponseWriterhttp.Request的两个不同参数。 http.ResponseWriter参数包含服务器对传入请求的响应,该响应以http.Request对象的形式出现。

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

将所有零件加在一起

将所有组件添加到一起之后,Go Web服务器应该已经准备就绪。该代码应类似于以下内容:

 package main
import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}

需要第一行将Go Web服务器代码编译为可执行文件。

使用Go构建Web服务器

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

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