如何在项目变得更大的情况下规划处理程序?

时间:2017-05-19 17:19:21

标签: go

我正在使用Go构建一个网站,我知道它是如何工作的以及如何处理handlefunc()的路由。但是,我的网站越来越大,我可能会有很多网址。问题是如何处理这一切?我不能在我的handelfunc()中添加例如100+或500 + main()以匹配每个可能的路线或网址。那怎么管理呢?提前谢谢。

注意::

我的问题不需要任何代码。

1 个答案:

答案 0 :(得分:0)

你绝对不应该在你的主要文件中放置500+ HandleFunc

首先,随着项目规模的扩大,您可能会创建模块和类型。

然后,您可以从main委托这些模块或类型,然后每个模块或类型将自己注册处理。

此外,您的许多网址可能会遵循以下模式,例如:

"/articles/{id}"

如果是这种情况,您应该只注册该模式一次,然后处理请求的函数可以根据参数{id}运行。

如果使用模式,有几个库可以帮助管理路由,或者您也可以编写自己的路由逻辑。

在这个问题上看看这个问题的一些替代方案:

Wildcards in the pattern for http.HandleFunc

例如,如果您使用Chihttps://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的文档)

这只是一个例子,您可以使用不同的方式实现类似的逻辑。