Open7
Go Start HTTP Server
http.ListenAndServe
関数
http.ListenAndServe
関数は第1引数のアドレス文字列と第2引数のハンドラーを使って HTTP サーバーを起動する
err := http.ListenAndServe(
":18080",
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:])
}),
)
if err != nil {
fmt.Printf("failed to terminate server: %v", err)
os.Exit(1)
}
簡易的なサーバー立ち上げなどで有効、メジャーな方法ではない
*http.Server
型の ListenAndServe
メソッド
s := &http.Server {
Addr: ":18080",
Handler: http.HandlerFunc(func(w http.ResponseWriter, r * http.Request) {
fmt.Fprintg(w, "Hello, %s!", r.URL.Path[1:])
}),
}
err := s.ListenAndServe()
*http.Server
型の ListenAndServe
メソッドは HTTP サーバー起動の定番であり、以下の特長がある
-
Shutdown
メソッドが実装されている - サーバータイムアウト時間を柔軟に設定できる
*http.Server
型の Serve
メソッド
net.Listen
関数でリッスンを開始しておくのがポイント
l, err := net.Listen("tcp", ":"+"18888")
if err != nil {
log.Fatalf("failed to listen port %s: %v", p, err)
}
s := &http.Server{
Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:])
}),
}
err := s.Serve(l)