1
나는 아래의 코드로 서버를 실행하고 있습니다 :Golang의 Negroni입니다 및 http.NewServeMux() 문제
// Assuming there is no import error
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
http.Error(w, "File not found", http.StatusNotFound)
})
n := negroni.Classic()
n.Use(negroni.HandlerFunc(bodmas.sum(4,5)))
n.UseHandler(mux)
n.Run(":4000")
그것은 완벽하게 잘 작동합니다.
그러나 bodmas.sum
을 다른 http handler
으로 감 으면 항상 "파일을 찾을 수 없습니다."라는 메시지가 나타납니다. 흐름이이 경로로 이동하지 않습니다.
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
http.Error(w, "File not found", http.StatusNotFound)
})
n := negroni.Classic()
n.Use(negroni.HandlerFunc(wrapper.RateLimit(bodmas.sum(4,5),10)))
n.UseHandler(mux)
n.Run(":" + cfg.Server.Port)
}
wrapper.RateLimit
은 다음과 같이 정의됩니다. 별도로 테스트 할 때 예상대로 작동합니다.
func RateLimit(h resized.HandlerFunc, rate int) (resized.HandlerFunc) {
:
:
// logic here
rl, _ := ratelimit.NewRateLimiter(rate)
return func(w http.ResponseWriter, r *http.Request, next http.HandlerFunc){
if rl.Limit(){
http.Error(w, "Gateway Timeout", http.StatusGatewayTimeout)
} else {
next(w, r)
}
}
}
오류가 없습니다. 이 동작에 대한 제안 사항이 있습니까? 작동 원리