在golang中使用chi中间件时无法运行控制器



我正在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

最新更新