gpt4 book ai didi

go - Negroni 和 Gorilla 上下文 ClearHandler

转载 作者:IT王子 更新时间:2023-10-29 01:36:32 25 4
gpt4 key购买 nike

是否可以使用 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()需要一个类型为 negroni.Handler 的参数但是 gorilla 的context.ClearHandler()返回 http.Handler 类型的值.

好在还有一个选择Negroni.UseHandler()需要 http.Handler 的方法,所以只使用它。请注意,context.ClearHandler() 还需要另一个 http.Handler:

otherHandler := ... // Other handler you want to clear
n.UseHandler(context.ClearHandler(otherHandler))

注意事项:

Router来自 gorilla/mux包裹自动调用context.Clear()在请求生命周期结束时,因此如果您正在使用它,则无需使用 context.ClearHandler() 清除上下文。您只需将它用于其他/自定义处理程序(除非您想手动调用 context.Clear())。

关于go - Negroni 和 Gorilla 上下文 ClearHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30506831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com