Go Web 實戰之HTTP的封裝
阿新 • • 發佈:2019-01-11
Go web
從今天起 ,本菜準備跟著無聞學習一下Beego服務。Beego還是比較好的一個web框架。其實很多東西都可以照著官網去學習。
按照官網,首先實現一個最最簡單的HTTP伺服器
go get github.com/astaxie/beego
好了,接著。建立一個main.go (其實更詳細的過程可以參見beego官網)
package main import ( "github.com/astaxie/beego" ) type HomeController struct { beego.Controller } func (self *HomeController) Get() { self.Ctx.WriteString("Hello,World !! ") } func main() { beego.Router("/",&HomeController{}) beego.Run() }
這段程式碼十分的簡單。初始化一個Controller,過載一下Get方法。Get方法呢,就去寫進去一個字串。而main函式是註冊一個路由。將對 "/" 的訪問,全部去匯入到 HomeController 中,再beego.Run()
看看這個被過載的beego.controller
下面具體來介紹http伺服器的底層實現。
version1
package main import ( "io" "log" "net/http" ) func main() { //設定路由 http.HandleFunc("/",handler) err:=http.ListenAndServe(":80",nil) if err!=nil{ log.Fatal(err) } } func handler(w http.ResponseWriter,r *http.Request){ io.WriteString(w,"Hello world,this is version 1") }
Version2
package main import ( "io" "log" "net/http" ) func main() { mux := http.NewServeMux() mux.Handle("/",&myHandler{}) err:=http.ListenAndServe(":80",mux) if err != nil { log.Fatal(err) } } type myHandler struct { } func (*myHandler) ServeHTTP(w http.ResponseWriter,r *http.Request){ io.WriteString(w,"URL:"+r.URL.String()) }