第2章:Webサーバーの作成
2.1はじめに
限り、ネットを通じて、Webサーバーを作成するための申し出に標準ライブラリの範囲を移動して、非常に簡単な手順を介してサーバー移動を作成/ HTTPパケット通話ListenAndServe
機能やパラメータとして、着信ネットワークアドレスとハンドル要求処理(ハンドラ)その上に。ネットワークアドレスパラメータが空の文字列がある場合、サーバーはネットワークに接続されているデフォルトのポート80を使用しています。nilにプロセッサのパラメータは、サーバがデフォルトのマルチプレクサを使用している場合DefaultServeMuxは、もちろん、我々はまた、NewServeMuxを呼び出すことにより、関数を作成することができますマルチプレクサ。マルチプレクサは、要求を処理するために対応するプロセッサにリダイレクト発見した後、要求を処理するために使用されているプロセッサを決定する要求されたURLに応じて、ユーザの要求を受信した後、
2.2デフォルトのマルチプレクサ(DefaultServeMux)
1)プロセッサの機能を使用して要求を処理
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)
}
A)HandleFunc方法について説明
実装原理b)はプロセッサの機能を:
- 言語HandlerFunc機能タイプの種類を持って行く、それがfの方法で変換ハンドラF正しいシグネチャを持つ関数とすることができます。
2)要求を処理するためにプロセッサを使用して
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)
}
説明Iハンドル方法
II。ノートプロセッサハンドラに
長い構造ServeHTTP方法ハンドラ・インターフェース・プロセッサは、次にそのままのように達成されます
III。我々はまた、サーバー・アーキテクチャを介してサーバのより詳細な構成を実行することができます
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()
}
2.3使用マルチプレクサは、自分で作成しました
- サーバーを作成するとき、我々はまた、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)
}
ServeMux構造の
構造関連方法ServeMux