2016-10-27 2 views
0

Ich verfolge dieses Tutorial. http://thenewstack.io/make-a-restful-json-api-go/wie Gorilla-Mux func Handler einzuwickeln von yaag Middleware

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

Ich brauche den Endpunkt func mit yaag Middleware wickeln.

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

Wie dies zu erreichen?

EDIT: Ich wickle mich um den Logger und die Rückgabe der Haddler. Logger nimmt das erste Argument als http.Handle. So wickeln Sie die Route.HandlerFunc wird nicht funktionieren. Kannst du mir bitte helfen?

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

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

Antwort

3

Alles, was Sie tun müssen, ist Ersatz .Handler() von .HandlerFunc() und wickeln Sie Ihre Handler-Funktion mit der Middleware, so dass jeder Endpunkt wird zunächst für die yaag Middleware übergeben und dann an Ihre Handler-Funktion , wie folgt:

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

Ich habe den Codestück aktualisiert, den ich verwende. –

Verwandte Themen