【发布时间】:2018-11-28 19:55:50
【问题描述】:
我正在使用微服务架构构建应用程序。 在网关上,我确实想将请求路由到正确的端点。
但是,端点现在在运行时是已知的,需要在数据库中进行配置。
下面是获取路由器的代码。
func getRouter() *mux.Router {
r := mux.NewRouter()
r.Use(dynamicRouteMiddleware)
return r
}
中间件本身是这样的:
func dynamicRouteMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Println("Error")
})
}
但是,永远不会打印“错误”。 只有当我为 '/' 放置处理程序时才会打印它
如何在没有处理程序的情况下创建中间件?
【问题讨论】:
-
为什么需要没有处理程序的中间件?我认为您混淆了这些术语,听起来您希望它本身是一个处理程序而不是中间件。
-
这似乎是一个很好的评论 :-) 如果您将其设置为答案,我可以接受。
-
您能描述一下
dynamicRouteMiddleware的用途[而不是抽象的例子] - 吗?如果您尚未添加到您的*mux.Router的路由,则不会匹配任何内容,并且不会在没有匹配的情况下调用中间件。