goweb-搭建服務

web應用簡介

Web 應用在咱們的生活中無處不在。看看咱們平常使用的各個應用程序,它們要
麼是 Web 應用,要麼是移動 App 這類 Web 應用的變種。不管哪種編程語言,只要
它可以開發出與人類交互的軟件,它就必然會支持 Web 應用開發。對一門嶄新的編程
語言來講,它的開發者首先要作的一件事,就是構建與互聯網( Internet)和萬維網( World
Wide Web)交互的庫( library)和框架,而那些更爲成熟的編程語言還會有各類五花八門
的 Web 開發工具。
Go 是一門剛開始嶄露頭角的語言,它是爲了讓人們可以簡單而高效地編寫後端系
統而建立的。這門語言擁有衆多的先進特性,如函數式編程方面的特性、內置了對併發
編程的支持、現代化的包管理系統、垃圾收集特性、以及一些一應俱全威力強大的標準
庫,並且若是須要咱們還能夠引入第三方開源庫。web

使用 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)
}
相關文章
相關標籤/搜索