learnku.com - goblog學習一

0day發表於2021-03-21

第一天學到第三章。

服務啟動

go的Web Server在main.go的main()中,只要二個語句,加一個函式,但需要匯入net/http包:

http.HandleFunc("/", server)
http.ListenAndServe(localhost:3000,nil)

http.ListenAndServe函式啟動一個監聽埠,成功則返回空;http.HandleFunc函式把請求,遞交給server處理。所以HandleFunc只是個提供服務函式的介面卡,它的定義是函式的型別:

type HandlerFunc func(ResponseWriter, *Request)

服務解析函式

func server(w http.ResponseWriter, r *http.Request) {...}

在這個函式裡,需要對請求進行解析處理,包括:

  1. 標頭設定:w.Header().Set("Content-Type",text/html; charset=utf=8)。這樣瀏覽器能正確的解析伺服器返回的內容編碼格式,教程用郵件地址的做例子。
  2. 對404狀態碼設定:w.WriteHeader(http.StatusNotFound)。在請求找不到時,可以返回404狀態碼。不然找不到的網頁狀態碼還是200。
  3. 對請求的URL: r.URL.Path 解析,判斷做相應分支處理。方法是用fmt.Fprint(),把內容寫入w這個變數。

w 和 r

w是http.ResponseWriterd的例項,已經實現了io.Writer介面型別,而r是一個請求的指標。

本作品採用《CC 協議》,轉載必須註明作者和本文連結