net/http パッケージを使用すれば、基本的な HTTP サーバーを簡単に作成できます。
|

package main
|
|
import (
"fmt"
"net/http"
)
|
net/http サーバーの基本的な概念はハンドラーです。ハンドラーは、http.Handler インターフェイスを実装するオブジェクトです。ハンドラーを作成する一般的な方法は、適切なシグネチャを備えた関数の http.HandlerFunc アダプターを使用することです。
|
func hello(w http.ResponseWriter, req *http.Request) {
|
ハンドラーとして機能する関数は、引数として http.ResponseWriter と http.Request を取得します。レスポンスライターは、HTTP レスポンスに書き込むために使用されます。ここでは、単純なレスポンスは「hello\n」だけです。
|
fmt.Fprintf(w, "hello\n")
}
|
|
func headers(w http.ResponseWriter, req *http.Request) {
|
このハンドラーは、すべての HTTP リクエストヘッダーを読み取ってレスポンス本文にエコーすることで、少し洗練された処理を行います。
|
for name, headers := range req.Header {
for _, h := range headers {
fmt.Fprintf(w, "%v: %v\n", name, h)
}
}
}
|
|
func main() {
|
http.HandleFunc コンビニエンス関数を使用して、サーバールートにハンドラーを登録します。net/http パッケージ内のデフォルトルーターをセットアップし、関数を引数として受け取ります。
|
http.HandleFunc("/hello", hello)
http.HandleFunc("/headers", headers)
|
最後に、ポートとハンドラーを使用して ListenAndServe を呼び出します。nil は、セットアップしたばかりのデフォルトルーターを使用するよう指示します。
|
http.ListenAndServe(":8090", nil)
}
|