我正在golangnet/http
中使用chi编写一个中间件函数,但控制器函数没有执行(无法在函数中打印1(。
调用中间件:
r.With(myMiddleware.Authware).Post("/tryon", mainController.Tryon)
软件包-myMiddleware
func Authware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Middleware code
})
}
软件包-主控制器
func Tryon(w http.ResponseWriter, r *http.Request) {
// Dosent print anything
log.Println(1)
}
我读了文档,但对没有多大帮助
你能帮我调试一下并告诉我为什么会发生这种情况吗?此外,如果我想从中间件向控制器返回一些数据,我该怎么做?
main.go
func main() {
r := chi.NewRouter()
r.With(middle.Authware).Post("/tryon", controller.Tryon)
http.ListenAndServe(":3000", r)
}
通过middleware
逻辑后调用controller
:
中间件.go
func Authware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Middleware code
next.ServeHTTP(w, r)
})
}
控制器.go
func Tryon(w http.ResponseWriter, r *http.Request) {
// Doesn't print anything
log.Println(1)
}
如果您真的希望它是POST
请求:curl -X POST localhost:3000/tryon
p.S:在这里浏览代码示例:https://github.com/go-chi/chi