サカナ未遂

プログラミング、筋トレ、子育て

Go言語でechoサーバーを作る

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とLinuxcurlメソッドを使ってHTTPの挙動を学習中、RealWorldHTTP、良書です、皆さんも是非!