【发布时间】:2015-07-10 12:06:07
【问题描述】:
使用 gorilla mux,我目前有许多 URL 格式为:
domain.com/org/{subdomain}/{name}/pagename
这样代码看起来像:
rtr.HandleFunc("/org/{subdomain}/{name}/promote", promoteView)
我也想匹配:
subdomain.domain.com/{name}/pagename
我知道我可以做类似的事情
rtr.Host("{subdomain:[a-z]+}.domain.com").HandleFunc("/{name}/promote", promoteView)
匹配子域。是否可能只有一个 HandleFunc() 可以匹配两种类型的 URL,或者我需要两个 HandleFunc(),一个用于第一种情况,一个用于 subdomain.domain.com 情况?
【问题讨论】:
-
将它们作为 2 条路线处理有什么问题?它们都可以指向同一个处理函数。您必须以某种方式声明路径和主机,所以没有真正的方法可以缩短它。
-
我有大约 100 个处理程序,并希望避免代码膨胀/维护问题,因为每个处理程序都有重复的路线。
-
@MarkFletcher 查看我的解决方案
-
你这里有 2 条路由,所以你需要以某种方式定义它们,单独列出它们可能会使维护更容易。如果将主机+名称对组合成处理程序映射(la metakeule 的答案)对您也不起作用,那么我认为您需要为您要解决的问题提供更好的示例。