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)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/55017.html
標籤:Go
上一篇:go筆記--json包使用
下一篇:goweb-http協議
