Negroni 和 Gorilla 上下文 ClearHandler
Negroni and Gorilla Context ClearHandler
是否可以使用 Gorilla's context.ClearHandler()
作为 Negroni 的中间件,就像我看到它用作 Alice 的中间件一样?类似于:
n.Use(context.ClearHandler())
目前我会在每次回复后打电话给 context.Clear(r)
,但我更希望系统自动处理整理工作。我目前收到以下错误:
cannot use context.ClearHandler() (type http.Handler) as type negroni.Handler in argument to n.Use:
http.Handler does not implement negroni.Handler (wrong type for ServeHTTP method)
have ServeHTTP(http.ResponseWriter, *http.Request)
want ServeHTTP(http.ResponseWriter, *http.Request, http.HandlerFunc)
但我不确定错误消息告诉我什么。
Negroni.Use()
expects a parameter of type negroni.Handler
but Gorilla's context.ClearHandler()
returns a value of type http.Handler
.
好消息是有一个替代的 Negroni.UseHandler()
方法需要一个 http.Handler
所以就用它吧。请注意 context.ClearHandler()
还需要另一个 http.Handler
:
otherHandler := ... // Other handler you want to clear
n.UseHandler(context.ClearHandler(otherHandler))
备注:
请求生命周期结束时的 Router
from the gorilla/mux
package automatically calls context.Clear()
,因此如果您正在使用它,则不需要使用 context.ClearHandler()
清除上下文。您只需要将它用于其他/自定义处理程序(除非您想手动调用 context.Clear()
)。
是否可以使用 Gorilla's context.ClearHandler()
作为 Negroni 的中间件,就像我看到它用作 Alice 的中间件一样?类似于:
n.Use(context.ClearHandler())
目前我会在每次回复后打电话给 context.Clear(r)
,但我更希望系统自动处理整理工作。我目前收到以下错误:
cannot use context.ClearHandler() (type http.Handler) as type negroni.Handler in argument to n.Use:
http.Handler does not implement negroni.Handler (wrong type for ServeHTTP method)
have ServeHTTP(http.ResponseWriter, *http.Request)
want ServeHTTP(http.ResponseWriter, *http.Request, http.HandlerFunc)
但我不确定错误消息告诉我什么。
Negroni.Use()
expects a parameter of type negroni.Handler
but Gorilla's context.ClearHandler()
returns a value of type http.Handler
.
好消息是有一个替代的 Negroni.UseHandler()
方法需要一个 http.Handler
所以就用它吧。请注意 context.ClearHandler()
还需要另一个 http.Handler
:
otherHandler := ... // Other handler you want to clear
n.UseHandler(context.ClearHandler(otherHandler))
备注:
请求生命周期结束时的 Router
from the gorilla/mux
package automatically calls context.Clear()
,因此如果您正在使用它,则不需要使用 context.ClearHandler()
清除上下文。您只需要将它用于其他/自定义处理程序(除非您想手动调用 context.Clear()
)。