Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術
という本で、現在HTTPの歴史を勉強しています。
HTTPの挙動を確認するにあたり、Go言語でechoサーバーを作る方法があったので備忘録。 ソースは以下のようになります。
package main import ( "fmt" "log" "net/http" "net/http/httputil" ) func handler(w http.ResponseWriter, r *http.Request) { dump, err := httputil.DumpRequest(r,true) if err != nil{ http.Error(w, fmt.Sprint(err), http.StatusInternalServerError) return } fmt.Println(string(dump)) fmt.Fprintf(w,"<html><body>hello</body></html>\n") } func main(){ var httpServer http.Server http.HandleFunc("/",handler) log.Println("start http listen :8080") httpServer.Addr = ":8080" log.Println(httpServer.ListenAndServe()) }
上記コードを記載したファイルをserver.goとし、 go run server.goで実行します。
すると、mainメソッドが呼ばれ、localhost:8080でリクエストが来るのを待つ状態となります。 それから、ブラウザで、http://localhost:8080にアクセスすると、handerの処理が呼ばれ、画面に「hello」の文字が表示されます。
このserver.goとLinuxのcurlメソッドを使ってHTTPの挙動を学習中、RealWorldHTTP、良書です、皆さんも是非!