[Go言語] httpハンドラの共通部分を取り出していい感じにする
October 14, 2013
この記事はQiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。
ハンドラをラップするようなハンドラを作る関数つくればいい。
package main
import (
"fmt"
"log"
"net/http"
)
func baseHandlerFunc(handler func(w http.ResponseWriter, r *http.Request)) http.Handler {
return baseHandler(http.HandlerFunc(handler))
}
func baseHandler(handler http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// common
log.Println(r.URL, r.Method)
handler.ServeHTTP(w, r)
})
}
// handler
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "hello")
}
func main() {
http.Handle("/", baseHandlerFunc(index))
http.ListenAndServe(":8080", nil)
}