本文轉自https://freeaihub.com/article/make-a-http-server-with-go.html,該頁可在線進行運行go服務器
本節將使用go語言中的net/http package編寫寫出一個簡潔的HTTP服務器。
net/http servers中的一個基礎概念是處理程序(handlers),處理程序是實現http.Handler接口的對象 。編寫處理程序的常見方法是http.HandlerFunc在具有適當簽名的函數上使用適配器。
充當處理程序的函數采用http.ResponseWriter和http.Request作為參數。響應編寫器用於填寫HTTP響應。在這里,我們的回應就是“ hello \ n”。
該處理程序通過讀取所有HTTP請求標頭並將它們回顯到響應主體中,從而使操作更加復雜。
我們使用http.HandleFunc便捷功能在服務器路由上注冊處理程序 。它在程序包中設置默認路由器,net/http並接受一個函數作為參數。
最后,ListenAndServe使用端口和處理程序進行調用。nil告訴它使用我們剛剛設置的默認路由器。在后台運行服務器,並訪問/hello路由。
配置Go語言運行環境
cp /share/tar/go1.12.9.linux-amd64.tar.gz .
tar -C /usr/local -xzvf go1.12.9.linux-amd64.tar.gz
echo export PATH=$PATH:/usr/local/go/bin >> /etc/profile
source /etc/profile
go version
編寫Go語言http server程序
cat >> http-server.go << EOF
package main
import (
"fmt"
"net/http"
)
func hello(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "hello\n")
}
func headers(w http.ResponseWriter, req *http.Request) {
for name, headers := range req.Header {
for _, h := range headers {
fmt.Fprintf(w, "%v: %v\n", name, h)
}
}
}
func main() {
http.HandleFunc("/hello", hello)
http.HandleFunc("/headers", headers)
http.ListenAndServe(":80", nil)
}
EOF
開啟服務器並進行驗證
go run http-server.go &
curl localhost/hello
