おかげさまで、ありがとうございました。私はいくつかの提案を試して、ミニマリストのラッパーを使用するやや単純なソリューションに着いた。ここでは私のために働いたソリューションは、(、いっその他のソリューションを、コメントを提供すること自由に感じ、か)である:
import (
"fmt"
"log"
"net/http"
"net/http/httptest"
"net/http/httputil"
"github.com/gorilla/mux"
)
:
func logHandler(fn http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
x, err := httputil.DumpRequest(r, true)
if err != nil {
http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
return
}
log.Println(fmt.Sprintf("%q", x))
rec := httptest.NewRecorder()
fn(rec, r)
log.Println(fmt.Sprintf("%q", rec.Body))
}
}
func MessageHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "A message was received")
}
、次のコードは、前述のハンドラを使用します:
:
router := mux.NewRouter()
router.HandleFunc("/", logHandler(MessageHandler))
:
出力から上記のコードは、次の行に沿ったものになります。
:
2016/07/20 14:44:29 "GET ... HTTP/1.1\r\nHost: localhost:8088\r\nAccept: */*\r\nUser-Agent: curl/7.43.0\r\n\r\n"
2016/07/20 14:44:29 ...[response body]
: