gpt4 book ai didi

Gorilla mux,计算所有传入请求

转载 作者:IT王子 更新时间:2023-10-29 02:02:07 26 4
gpt4 key购买 nike

我有一台使用 gorilla 多路复用器的服务器。现在我有两个这样的处理程序:

api.HandleFunc("/foo", logHandler(mypackage.fooHandler)).Methods("GET")
api.HandleFunc("/bar", logHandler(mypackage.barHandler)).Methods("GET")

现在我想创建一个对请求进行计数的通用方法 (logHandler)。现在我有这样的东西:

func logHandler(fn http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
// what to do here???
}
}

我可以从 logHandler 函数中的请求 (r) 中获取所有我需要的信息,但是我需要返回什么?我如何让它发挥作用?

最佳答案

这应该有效。

var count = 0
func logHandler(fn http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
atomic.AddInt32(&count, 1)
log.Println(count)
fn(w, r)
}
}

请注意,我不确定 count 变量是否线程安全。如果不是,您可能想使用 channels 发送信号以增加计数器

我已经更新了答案以避免竞争条件。如评论中所述使用原子。

关于Gorilla mux,计算所有传入请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49816230/

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