Golang中如何在注册路由前获取待注册的路由URL或路由名称
Go语言路由注册前获取路由路径的实现方案
方案1:直接抽取路由路径为变量/常量
这是最轻量化的实现方式,无需额外封装,适合路由数量较少的场景:
// 先把所有路由路径定义为常量,方便统一管理和复用 const ( RoutePerson = "/person" RouteAnimal = "/animal" ) // 注册前打印路由 fmt.Println(RoutePerson) router.HandleFunc(RoutePerson, person.HandlePerson) fmt.Println(RouteAnimal) router.HandleFunc(RouteAnimal, animal.HandleAnimal)
方案2:封装统一注册工具函数
如果路由数量较多,推荐封装通用的注册逻辑,避免重复编写打印代码,后续要扩展路由校验、埋点等逻辑也可以直接在封装函数里加:
import "strings" // 封装注册函数,入参对应路由实例、路由路径、处理函数 func registerRoute(router *http.ServeMux, path string, handler func(http.ResponseWriter, *http.Request)) { // 存储路由名称,要去掉前缀斜杠就用strings.TrimPrefix处理 nameOfRoute := path // nameOfRoute := strings.TrimPrefix(path, "/") // 需要输出person/animal而非/person/animal时用这行 fmt.Println("待注册路由:", nameOfRoute) // 执行实际注册逻辑 router.HandleFunc(path, handler) } // 注册路由时直接调用封装好的函数即可 registerRoute(router, "/person", person.HandlePerson) registerRoute(router, "/animal", animal.HandleAnimal)
如果你用的是Gin、Echo、Fiber这类第三方Web框架,只需要调整封装函数的router参数类型和内部的注册方法,整体逻辑完全通用。
内容的提问来源于stack exchange,提问作者Marwan Galal
相关产品推荐
相关产品推荐

