如何使用 Go 建立基本的 Web 伺服器

如何使用 Go 建立基本的 Web 伺服器

Go 是一種有趣的程式語言,用於建立現代 Web 應用程式和系統軟體。它發布後引起了巨大的轟動,並為 Docker、Kubernetes、Terraform、Dropbox 和Netflix 等服務提供支援。

此外,Go 強大的內建套件集合使其成為 Web 程式設計的絕佳選擇。本文將向您展示如何用 Go 編寫一個基本的Web 伺服器。

導入必要的套件

net/HTTP 套件提供了創建 Web 伺服器和用戶端所需的一切。這個包提供了一些處理網路程式設計的有用函數。

您可以透過將以下行新增至原始程式碼的開頭來匯入它:

import "net/http"

本文也將使用fmt包來格式化字串,並使用log包來處理錯誤。您可以如上所示單獨匯入它們,或使用單一匯入語句匯入所有套件:

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

導入必要的套件後就可以繼續寫main函數了。繼續並使用.go副檔名儲存原始檔。如果您使用 Vim,請使用以下命令儲存並退出 Vim:

:wq server.go

編寫主函數

Go 程式直接駐留在主函數中,恰當地命名為「main」。您需要在此處進行伺服器調用。將以下行新增至原始程式碼並查看它們的作用:

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

此範例使用func關鍵字定義 main 函數。 Go 對左大括號的位置有嚴格的規則,因此請確保起始大括號位於正確的行上。 main 中的第一個語句定義了對根路徑 ( "/" ) 的所有 Web 請求都將由 index 處理,index 是一個http.HandlerFunc類型的函數。

第二行透過http.ListenAndServe函數啟動 Web 伺服器。它會向伺服器發出訊號,使其持續偵聽伺服器連接埠 8080 上傳入的 HTTP 請求。該函數的第二個參數用於阻止程式直到結束。

由於http.ListenAndServe始終傳回錯誤,因此此範例將此呼叫包裝在log.Fatal call 中。該語句記錄伺服器端產生的所有錯誤訊息。

實現處理功能

可以看到,main函數呼叫了處理函數index來處理客戶端請求。但是,該範例尚未為其伺服器定義此功能。

讓我們新增必要的語句以使索引函數可用:

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 伺服器將準備就緒。程式碼如下所示:

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 伺服器程式碼編譯為可執行文件


如何在 Windows 中驗證 MD5、SHA-1 和 SHA-256 校驗和

如何在 Windows 中驗證 MD5、SHA-1 和 SHA-256 校驗和

透過檢查檔案的 MD5、SHA-1 或 SHA-256 校驗和,您可以驗證檔案的完整性並確保檔案沒有損壞或變更。

什麼是 FileRepMalware?刪除有沒有問題?

什麼是 FileRepMalware?刪除有沒有問題?

防毒軟體有一定的標準來過濾掉系統中的可疑檔案、應用程式和進程。 FileRepMalware 就是其中之一。那麼這是什麼?他們安全嗎?刪除還是不刪除這些檔案?

什麼是橢圓曲線密碼學 (ECC)?

什麼是橢圓曲線密碼學 (ECC)?

什麼是橢圓曲線密碼學?為什麼當今科技領域有這麼多關於此類密碼學的資訊?

如何在 Windows 上啟用勒索軟體防護功能

如何在 Windows 上啟用勒索軟體防護功能

勒索軟體保護是 Windows 11 附帶的實用功能,可協助保護使用者的裝置免受勒索軟體攻擊。

如何在Windows 10上快速定位滑鼠遊標

如何在Windows 10上快速定位滑鼠遊標

如果你經常需要使用大螢幕,那麼丟失微小的滑鼠指標肯定不是罕見的情況。

如何在 Windows 中使用 Net Use 命令

如何在 Windows 中使用 Net Use 命令

net use 指令是一個指令提示字元指令,用於連線、刪除和設定與共用資源(例如對應磁碟機和網路印表機)的連線。

了解端點安全

了解端點安全

現代資訊科技的世界帶來了許多好處,但也為壞人提供了有利條件。

10 個增強遊戲效能的最佳 GPU 超頻工具

10 個增強遊戲效能的最佳 GPU 超頻工具

GPU超頻是使用第三方軟體提高顯示卡效能的過程。您可以增強 GPU 以提供更好的效能。

如何恢復 Windows 10 中遺失的預設電源計劃

如何恢復 Windows 10 中遺失的預設電源計劃

本指南將向您展示如何恢復 Windows 10 中缺少的預設電源計劃「平衡」、「高效能」、「省電」或「終極效能」。

如果電腦當機,請按此組合鍵

如果電腦當機,請按此組合鍵

有一個鮮為人知的組合鍵可以幫助您將設備恢復到正常狀態。