labstack/echo で http.HandleFuncをラップする
func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello") }
ってな感じの, func(http.ResponseWriter, *http.Request)
を echo.HandlerFunc
として利用したいときは,こうすれば良い.
e := echo.New()
e.GET("/hello", standard.WrapHandler(http.HandlerFunc(handler)))
これで,利用できるようになる.
standard.WrapHandler
は http.Handler
を受け取って, standard.HandlerFunc
を返す. http.Handler
を受け取るようになっているので, handler
を http.HandlerFunc
に渡してあげて, http.Handler
にしてあげる必要がある.
ミドルウェアをラップするのは更に簡単で,こんな感じのミドルウェアがあるとする.
func middleware(next http.Handler) http.Handler { return http.HandleFunc(func (w http.ResponseWriter, r *http.Request) { println("middleware") next.ServeHTTP(w,r) }) }
これをEchoで利用するには,こうすれば良い.
e := echo.New() e.Use(standard.WrapMiddleware(middleware))
これでOK.