http.Requestとhttp.Responseをダンプする

net/http/httputilを使えばいい

httputilの存在をしらず、最初は自分でRequest、Responseをダンプする関数を書いていたのだが こんなの無いわけない(少なくとも誰かがライブラリ作ってるはず。。。)と思い探したらそもそも公式で用意されていた。

http.Requestのダンプ

b, err := httputil.DumpRequest(request, true) // 2つ目の引数はbodyをダンプするかどうか
if e != nil {
    fmt.Println(e)
} else {
    fmt.Println(string(b))
}

これで以下のような結果が得られるはず。

POST / HTTP/1.1
Host: example.com

action=getmeas&category=1

http.Responseのダンプ

呼び出す関数が違うだけで使い方はDumpRequestと同じ。

b, err := httputil.DumpResponse(request, true) // 2つ目の引数はbodyをダンプするかどうか
if e != nil {
    fmt.Println(e)
} else {
    fmt.Println(string(b))
}

これで以下のような結果が得られるはず。

HTTP/1.1 200 OK
Content-Length: 23
Content-Type: application/json
Date: Sun, 03 Jan 2021 14:54:34 GMT

{"name":"Bob","int":18}