2016-10-27 9 views
0

私はこのチュートリアルに従っています。 http://thenewstack.io/make-a-restful-json-api-go/yaagミドルウェアでゴリラmux funcハンドラをラップする方法

router := mux.NewRouter().StrictSlash(true) 
for _, route := range routes { 
    router. 
     Methods(route.Method). 
     Path(route.Pattern). 
     Name(route.Name). 
     Handler(route.HandlerFunc) 
} 

私はyaagミドルウェアを使用してエンドポイントfuncをラップする必要があります。

r.HandleFunc("/", middleware.HandleFunc(handler)) 

これを行うには?

EDIT: 私はロガーの周りを包み込み、ハドラーを返しています。 Loggerはhttp.Handleのように最初の引数をとります。したがって、route.HandlerFuncをラップすると動作しません。ここで私を助けてくれますか?

handler := Logger(route.HandlerFunc, route.Name) 

    router. 
     Methods(route.Method). 
     Path(route.Pattern). 
     Name(route.Name). 
     Handler(handler) 

答えて

3

あなたがしなければならないのは、.HandlerFunc()によって代替.Handler()で、ミドルウェアを使用してハンドラ関数をラップするので、各エンドポイントは、あなたのハンドラ関数に続いyaagミドルウェアのための最初のパスとなります次のようになります。

router := mux.NewRouter().StrictSlash(true) 
for _, route := range routes { 
    router. 
     Methods(route.Method). 
     Path(route.Pattern). 
     Name(route.Name). 
     HandlerFunc(middleware.HandleFunc(route.HandlerFunc)) // change here 
} 
+0

私が使用しているコードを更新しました。 –

関連する問題