【问题标题】:Golang gorilla mux routes from class or file来自类或文件的 Golang gorilla mux 路由
【发布时间】:2014-09-08 16:42:36
【问题描述】:

我正在使用 gorilla mux 并希望将所有应用程序路由设置在一个文件中,这样它们就不会用一堆路由填满主文件。理想情况下,我也希望拥有从数据库中提取路线的可选功能。

gorilla mux 是用于此目的的正确软件包,还是有其他可看的东西?这是可以做到的吗?

【问题讨论】:

  • gorilla mux 无法单独执行此操作。尽管您必须将路线放在主文件中,但没有理由。
  • 我想通了,你知道是否已经编写了任何库来处理这个问题,所以我不会浪费时间尝试重新创建*吗?​​
  • 我还没有看到。做个基本的映射不难,我贴个答案供参考。

标签: go gorilla


【解决方案1】:

gorilla mux 不这样做,并且在 Go 中路由库并不常见,因为它是静态类型和编译的语言。

如果您有一个简单的 1:1 处理程序映射,则可以相当容易地做到这一点:

// register the handlers or handler_funcs by name in a map:
handlerMap := make(map[string]*http.Handler)
// OR
handlerFuncMap := make(map[string]func(http.ResponseWriter, *http.Request))

handlerMap["myHandler"] = myHandler

// now you can iterate over you config values and assign them to a router
for path, handler := range routes {
    myRouter.Handler(path, handlerMap[handler])
}

【讨论】:

  • 感谢@JimB 很高兴有例子,以防其他人搜索类似的东西,并很好地解释为什么它在 go 中不常见。