You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gorilla mux子路由器是否会继承父路由器通过Use()添加的中间件?

问题

使用gorilla/mux路由库时,父路由器通过Use()方法挂载的中间件,子路由器是否会继承使用?
此前检索相关问题未找到清晰明确的答案,官方文档也没有对应说明,以下方代码场景为例:请求匹配子路由的路径时,是否会触发父路由挂载的logMiddleware?

mainRouter := mux.NewRouter()
mainRouter.Use(logMiddleware)
subRouter := mainRouter.PathPrefix("/users/").Subrouter()
subRouter.Handle("/john", johnHandler())

注:上述代码实际匹配的请求路径为/users/john,而非根路径下的/john,子路由的路径会拼接在父路由的路径前缀之后。

验证结论

会触发。

  • 父路由通过Use()方法注册的中间件,默认对该父路由下所有子路由生效,子路由会自动继承父级挂载的所有中间件,不需要重复调用Use()注册。
  • 上述示例中,向/users/john发起请求时,请求会先经过logMiddleware处理,之后才会进入johnHandler执行业务逻辑。
  • 如果需要让特定子路由跳过父级中间件,需要自行在中间件内增加路由匹配判断逻辑,gorilla/mux本身没有提供直接屏蔽继承中间件的原生配置。

内容的提问来源于stack exchange,提问作者Damien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:51:41