gpt4 book ai didi

python - 如何创建一个中间件来自动保存点击任何 URL 的用户的 IP 地址

转载 作者:行者123 更新时间:2023-12-01 22:12:41 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Logging http responses (in addition to requests)

(3 个回答)


1年前关闭。




我想知道我是否可以创建一种中间件,它会自动为我提供点击我网站任何 URL 的用户的 IP 地址并可以打印到日志中?

最佳答案

要实现中间件,您必须创建一个满足 http.Handler 的函数。界面。
实现此目的的一种方法是使用充当中间件的装饰器函数:

func middleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// middleware code for example logging
log.Println(r.RemoteAddr)
next.ServeHTTP(w, r)
})
}
next参数是您的实际 http.Handler .
下面是一个更完整的例子:
func main() {
var handler http.HandlerFunc = testHandler

// Here the handler is wrapped with the middleware
http.Handle("/test", middleware(handler))
}

func middleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// middleware code for example logging
log.Println(r.RemoteAddr)
next.ServeHTTP(w, r)
})
}

func testHandler(w http.ResponseWriter, r *http.Request) {
// your handler code
}
此模式有时称为装饰器模式,有关更多信息,请参阅以下链接:
  • https://www.alexedwards.net/blog/making-and-using-middleware
  • https://en.wikipedia.org/wiki/Decorator_pattern
  • 关于python - 如何创建一个中间件来自动保存点击任何 URL 的用户的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62557864/

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