Go 基础教程 – 制作简易服务器

Go 基础教程 - 制作简易服务器

这篇教程以 Go 为核心,主要说明如何使用 Go 语言制作简易的服务器。在开始这篇 Go 教程之前,你可能需要一些 HTML 的基本知识。这篇教程文章中会展示一些使用 HTML 及 CSS 制作而成的网页,我们会公开展示这些比较复杂的代码让大家动手尝试,大部分功能也可以用最简单的 HTML 代码实现。

如果你想对 HTML 有更多的了解,可以参考一下之前的一些 HTML 相关的文章:

​无需下载软件,有手就能做的线上个人简历!​

​HTML / CSS / JS 编程入门 —— 制作可切换主题的简单网页​

得益于 Go 语言中内建的 HTTP 库,Go 语言在搭建服务器上具有简单、高效的优势。这篇教程中的服务器通过接受 GET 请求并作出反馈,同时使用 POST 请求处理表单提交等任务。

这篇教程基本涉及三个简单的流程:

在编写代码之前,我们需要在 Go 项目中创建名为 static 的文件夹,然后分别新建 ​​index.html​​​ 以及 ​​form.html​​ 两个文件。

  1. 在​​支持 Go 语言的编辑器​​​中建立 Go 项目,一般初始文件为​​main.go​

Go 基础教程 - 制作简易服务器

  1. 在 Go 项目中创建名为 static 的文件夹,然后分别新建​​index.html​​​ 以及​​form.html​​ 两个文件。

Go 基础教程 - 制作简易服务器

配置 main.go 文件

在我们的 Go 主程序中,我们需要先导入三个 Go 语言的基本库。这些库为 Go 语言内建的标准库,不需要额外安装,直接导入即可。

package main

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

接着,我们来看代码中的 ​​main()​​ 部分:

func main() {
fileServer := http.FileServer(http.Dir("./static"))
http.Handle("/", fileServer)
http.HandleFunc("/hello", helloHandler)
http.HandleFunc("/form", formHandler)

fmt.Printf("在 8080 端口运行服务器n")
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatal(err)
}
}

我们首先通过 ​​fileServer := http.FileServer(http.Dir("./static"))​​​ 链接我们事先创建好的文件夹,然后通过 ​​Handle​​​ 和 ​​HandleFunc​​ 函数添加服务器路线。

以 ​​"/hello"​​​ 为例,服务器运行后会在网址栏监听 ​​/hello​​​ 的请求。当我们在服务器网址后方输入 ​​http://localhost:8080/hello​​ 时,便会运行相应的程序。

主程序末端的三行代码主要是确定程序是否正确运行,若程序出错,代码便会报错。

helloHandler 及 formHandler

我们在主程序中创建了 ​​helloHandler​​​ 和 ​​formhandler​​ 两个函数,这两个函数分别写入以下代码:

helloHandler:

func helloHandler(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/hello" {
http.Error(w, "404 not found", http.StatusNotFound)
return
}

if r.Method != "GET" {
http.Error(w, "method is not supported", http.StatusNotFound)
return
}

fmt.Fprintf(w, "hello!")
}

这两个处理程序使用 ​​Request​​​ 检查路径是否正确。若路径不正确,则服务器返 ​​StatusNotFound​​​,而若程序与 ​​GET​​ 不符合,则会返回 “method is not supported”。若两者均符合,服务器就会运行下方的程序,在页面中返回 "hello!"。

formHandler:

func formHandler(w http.ResponseWriter, r *http.Request) {
if err := r.ParseForm(); err != nil {
fmt.Fprintf(w, "ParseForm() err: %v", err)
return
}
fmt.Fprintf(w, "POST request successfulnn")
name := r.FormValue("name")
address := r.FormValue("address")
fmt.Fprintf(w, "Name = %sn", name)
fmt.Fprintf(w, "Address = %sn", address)
}

在表单处理程序中,我们则通过 ​​ParseForm()​​​ 函数解析所接受的数据并更新 ​​r.PostForm​​​ 以及​​r.Form​​​,通过​​r.FormValue​​​ 访问​​name​​​ 及 ​​address​​​ 中的值。最后,我们通过 ​​fmt.Fprintf​​​ 将这两个值写入 ​​ResponseWriter​​ 中。

编写 HTML 代码

这篇文章只需要最简单的 HTML 网页代码以及表单代码即可,下方的首页、表单页面可以通过 Lightly 的快照获取完整代码:

​https://ad57775530-share.lightly.teamcode.com​

Go 基础教程 - 制作简易服务器

Go 基础教程 - 制作简易服务器

试运行服务器

完成代码配置后,我们可以运行程序查看页面运行效果:

Go 基础教程 - 制作简易服务器

在网址栏中末尾输入 ​​/hello​​,即可返回 "hello!" 文本。

Go 基础教程 - 制作简易服务器

在网址栏中末尾输入 ​​/form.html​​ 跳转到表单页面后,填写表单并点击提交即可跳转到 POST 请求成功页面。

Go 基础教程 - 制作简易服务器

发表评论

相关文章