我正在使用Go
构建一个网站,我知道它是如何工作的以及如何处理handlefunc()
的路由。但是,我的网站越来越大,我可能会有很多网址。问题是如何处理这一切?我不能在我的handelfunc()
中添加例如100+或500 + main()
以匹配每个可能的路线或网址。那怎么管理呢?提前谢谢。
注意::
我的问题不需要任何代码。
答案 0 :(得分:0)
你绝对不应该在你的主要文件中放置500+ HandleFunc
。
首先,随着项目规模的扩大,您可能会创建模块和类型。
然后,您可以从main
委托这些模块或类型,然后每个模块或类型将自己注册处理。
此外,您的许多网址可能会遵循以下模式,例如:
"/articles/{id}"
如果是这种情况,您应该只注册该模式一次,然后处理请求的函数可以根据参数{id}
运行。
如果使用模式,有几个库可以帮助管理路由,或者您也可以编写自己的路由逻辑。
在这个问题上看看这个问题的一些替代方案:
Wildcards in the pattern for http.HandleFunc
例如,如果您使用Chi
(https://github.com/pressly/chi)来管理路由,请在主页中执行以下操作:
r := chi.NewRouter()
r.Mount("/admin", adminRouter())
然后在adminRouter()
函数中继续创建将在/admin
下提供的处理程序:
func adminRouter() http.Handler {
r := chi.NewRouter()
r.Use(AdminOnly)
r.Get("/", adminIndex)
r.Get("/accounts", adminListAccounts)
return r
}
(所有这些都来自Chi的文档)
这只是一个例子,您可以使用不同的方式实现类似的逻辑。