使用Go語言實現一個簡單的http web服務器


本文轉自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.ResponseWriterhttp.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM