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


應如何以及為何停用 2.4GHz Wi-Fi 網路?

應如何以及為何停用 2.4GHz Wi-Fi 網路?

您應該考慮關閉家庭 Wi-Fi 網路上舊的 2.4GHz 頻段,並使用速度更快且不那麼「擁擠」的新 5GHz 頻段。我們透過下面的文章來了解一下吧。

如何在 Windows Defender 上啟用沙箱功能

如何在 Windows Defender 上啟用沙箱功能

Microsoft Windows Defender 的整合防毒引擎成為第一個能夠在沙箱環境中運作的防毒軟體。

什麼是 Screen Locker 勒索軟體?如何去除?

什麼是 Screen Locker 勒索軟體?如何去除?

Screen Locker 勒索軟體是一種勒索軟體,它會接管螢幕並阻止您使用裝置。此類勒索軟體呈上升趨勢,如果沒有足夠的相關信息,則很難將其刪除。

WiFi dongle速度慢、效能差的6個原因

WiFi dongle速度慢、效能差的6個原因

使用 WiFi 轉接器時,您可能會遇到一些問題,尤其是無線速度較差,無法滿足您在家中其他裝置上的需求。以下是 USB WiFi 轉接器速度緩慢的一些原因以及解決方法。

為什麼我們需要格式化USB?如何格式化USB?

為什麼我們需要格式化USB?如何格式化USB?

格式化 USB 幾乎與格式化任何其他磁碟機一樣。您可以使用預設設定或了解不同選項的含義並使用最適合您的設定。以下文章將幫助您在格式化 USB 時選擇最佳設定。

請為您的電腦下載一組歷史繪畫風格壁紙

請為您的電腦下載一組歷史繪畫風格壁紙

繼續分享電腦和手機精美桌布的類別,今天LuckyTemplates送給讀者一組古代主題的繪畫風格桌布。喜歡的話請觀看並下載。

如何為路由器設定訪客網絡

如何為路由器設定訪客網絡

路由器上的訪客訪問被理解為訪客網絡,與個人無線網路系統完全分離。

如何使用 ViveTool 啟動 Windows Copilot

如何使用 ViveTool 啟動 Windows Copilot

Windows Copilot 是 Windows 11 中的 Microsoft AI 代理,旨在協助您提高工作效率並更快地完成工作。

遊戲機是否感染了病毒?

遊戲機是否感染了病毒?

現代遊戲機具有用戶使用的線上服務。從技術上講,任何線上內容都可能成為病毒的受害者。那麼遊戲機是否感染了病毒呢?

如何在Windows上開啟hosts文件

如何在Windows上開啟hosts文件

Windows電腦上的Host檔案將儲存有關伺服器和指向的網域名稱的資訊。我們可以編輯host檔案來阻止網站訪問,或訪問Facebook,... 那麼如何在電腦上開啟Host檔案呢?