我正在使用 chi 在 golang net/http
中编写一个中间件函数,但 Controller 函数没有被执行(无法在函数中打印 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
})
}
包 - mainController
func Tryon(w http.ResponseWriter, r *http.Request) {
// Dosent print anything
log.Println(1)
}
我阅读了文档,但没有多大帮助
您能帮忙调试一下并告诉我为什么会发生这种情况吗?另外,如果我想从中间件返回一些数据到 Controller ,我该怎么做?
最佳答案
main.go
func main() {
r := chi.NewRouter()
r.With(middle.Authware).Post("/tryon", controller.Tryon)
http.ListenAndServe(":3000", r)
}
传递中间件
逻辑后调用 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)
})
}
Controller .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
关于go - 在 golang 中使用 chi 中间件时无法运行 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73346070/