您好,登錄后才能下訂單哦!
這篇文章主要介紹“Go語言怎么實現一個Http Server”,在日常操作中,相信很多人在Go語言怎么實現一個Http Server問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Go語言怎么實現一個Http Server”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
實現一個簡單地httpServer
package main import ( "fmt" "log" "net/http" ) func home(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "這是主頁") } func user(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "這是用戶頁面") } func main() { http.HandleFunc("/", home) http.HandleFunc("/user", user) log.Fatal(http.ListenAndServe(":8080", nil)) }
此時啟動服務并訪問8080端口,可以看到下面的頁面
但是如果我想同時啟動多個server監聽不同的端口該怎么辦? 我們可以從邏輯上抽象出一個Server,可以表示對某個端口進行監聽的實體,這樣必要的時候,我們就可以啟動多個Server來監聽不同的端口
首先我們來寫一個接口
type Server interface{ //Route 設定一個路由,命中路由會執行handlerFunc的代碼 Route(pattern string handlerFunc http.HandlerFunc) //Start 用于啟動服務 Start(address string) error }
實現Server接口
func (s *sdkHttpServer) Route(pattern string,handlerFunc http.HandlerFunc){ http.HandleFunc(pattern,handlerFunc) } func (s *sdkHttpServer) Start(address string) error{ http.ListenAndServer(address,nil) } func NewSdkHttpServer(name string) Server { return &sdkHttpServer{ Name:name, } }
現在我們已經可以同時監聽多個端口了
func main(){ server := web.NewSdkHttpServer("my-test-server") server.Route("/",home) server.Route("/user",user) server.Start("8080") }
雖然我們已經對Server進行了抽象,但是在請求處理的過程中仍然存在問題,就比如我們要實現一個用戶注冊的接口
所以我們需要繼續對Context也就是上下文做一下抽象,這里的Context是我們自定義的Context不是go原生的Context
到此,關于“Go語言怎么實現一個Http Server”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。