第一天學到第三章。
服務啟動
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) {...}
在這個函式裡,需要對請求進行解析處理,包括:
- 標頭設定:
w.Header().Set("Content-Type",text/html; charset=utf=8)
。這樣瀏覽器能正確的解析伺服器返回的內容編碼格式,教程用郵件地址的做例子。 - 對404狀態碼設定:
w.WriteHeader(http.StatusNotFound)
。在請求找不到時,可以返回404狀態碼。不然找不到的網頁狀態碼還是200。 - 對請求的URL:
r.URL.Path
解析,判斷做相應分支處理。方法是用fmt.Fprint(),把內容
寫入w
這個變數。
w 和 r
w是http.ResponseWriterd的例項,已經實現了io.Writer介面型別,而r是一個請求的指標。
本作品採用《CC 協議》,轉載必須註明作者和本文連結