web應用簡介 Web 應用在我們的生活中無處不在。看看我們日常使用的各個應用程式,它們要 麽是 Web 應用,要麼是移動 App 這類 Web 應用的變種。無論哪一種編程語言,只要 它能夠開發出與人類交互的軟體,它就必然會支持 Web 應用開發。對一門嶄新的編程 語言來說,它的開發者首先要做的一件 ...
web應用簡介
Web 應用在我們的生活中無處不在。看看我們日常使用的各個應用程式,它們要
麽是 Web 應用,要麼是移動 App 這類 Web 應用的變種。無論哪一種編程語言,只要
它能夠開發出與人類交互的軟體,它就必然會支持 Web 應用開發。對一門嶄新的編程
語言來說,它的開發者首先要做的一件事,就是構建與互聯網( Internet)和萬維網( World
Wide Web)交互的庫( library)和框架,而那些更為成熟的編程語言還會有各種五花八門
的 Web 開發工具。
Go 是一門剛開始嶄露頭角的語言,它是為了讓人們能夠簡單而高效地編寫後端系
統而創建的。這門語言擁有眾多的先進特性,如函數式編程方面的特性、內置了對併發
編程的支持、現代化的包管理系統、垃圾收集特性、以及一些包羅萬象威力強大的標準
庫,而且如果需要我們還可以引入第三方開源庫。
使用 Go 語言進行 Web 開發正變得日益流行,很多大公司都在使用,如 Google、
Facebook、騰訊、百度、阿裡巴巴、京東、小米以及 360、美團、滴滴以及新浪等
helloword
package main
import (
"fmt"
"net/http"
)
//創建處理器函數
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello World!", r.URL.Path)
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
Web 伺服器的創建
簡介
Go 提供了一系列用於創建 Web 伺服器的標準庫,而且通過 Go 創建一個伺服器的
步驟非常簡單,只要通過 net/http 包調用 ListenAndServe 函數並傳入網路地址以及負
責處理請求的處理器( handler )作為參數就可以了。如果網路地址參數為空字元串,那
麽伺服器預設使用 80 埠進行網路連接;如果處理器參數為 nil,那麼伺服器將使用默
認的多路復用器 DefaultServeMux,當然,我們也可以通過調用 NewServeMux 函數創
建一個多路復用器。多路復用器接收到用戶的請求之後根據請求的 URL 來判斷使用哪
個處理器來處理請求,找到後就會重定向到對應的處理器來處理請求.
使用預設的多路復用器(DefaultServeMux)
第一種
package main
import (
"fmt"
"net/http"
)
//創建處理器函數
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "正在通過處理器函數處理你的請求")
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
使用處理器處理請求
第二種
package main
import (
"fmt"
"net/http"
)
type MyHandler struct{}
func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r
*http.Request) {
fmt.Fprintln(w, "正在通過處理器處理你的請求")
}
func main() {
myHandler := MyHandler{}
//調用處理器
http.Handle("/", &myHandler)
http.ListenAndServe(":8080", nil)
}
第三種
package main
import (
"fmt"
"net/http"
"time"
)
type MyHandler struct{}
func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r
*http.Request) {
fmt.Fprintln(w, "測試通過 Server 結構詳細配置服務
器")
}
func main() {
myHandler := MyHandler{}
//通過 Server 結構對伺服器進行更詳細的配置
server := http.Server{
Addr: ":8080",
Handler: &myHandler,
ReadTimeout: 2 * time.Second,
}
server.ListenAndServe()
}
使用自己創建的多路復用器
在創建伺服器時,我們還可以通過 NewServeMux 方法創建一個多路復用器
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "通過自己創建的多路復用器來處理請求")
}
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/myMux", handler)
http.ListenAndServe(":8080", mux)
}