【问题标题】:Map variable amount of urls to HandleFunc将可变数量的 url 映射到 HandleFunc
【发布时间】:2014-11-28 00:48:58
【问题描述】:

这是我第一次尝试使用 Go (Golang) 写一个小博客。现在,我有一个只有几页的小型网站。我的main 包含这个。

http.HandleFunc("/about", about)
http.HandleFunc("/contact", contact)
http.HandleFunc("/", homepage)
if err := http.ListenAndServe(":8080", nil); err != nil {
    log.Fatalln(err)
}

我的第一个问题是:这叫什么?我称其为将 URL 映射到函数,但我的谷歌结果并没有在这些搜索词上取得丰硕成果。这叫“路由”吗?

其次,我的目标是编写一个小型博客应用程序。我想使用数据库来保存博客文章和其他数据。但是,像我在上面所做的那样将 URL 映射到函数似乎并不正确,因为在有人发表博客文章之前无法知道 URL 应该是什么。我希望 URL 与博客文章标题相匹配。此外,可能有数百篇博文,所以写一堆http.HandleFuncs 似乎不合理。

最后,我的问题是:有哪些方法可以解决这个障碍?

【问题讨论】:

标签: go


【解决方案1】:

“博客应用”的另一种方法是静态网站生成器
你可以在gohugorepo GitHub)中找到一个很好的例子,这意味着you only have one Handler

if port > 0 {
    if !viper.GetBool("DisableLiveReload") {
        livereload.Initialize()
        http.HandleFunc("/livereload.js", livereload.ServeJS)
        http.HandleFunc("/livereload", livereload.Handler)
    }
    go serve(port)
}

但更一般地说,它被称为路由器,您可以在这个优秀的Guide to 3rd Party Routers in Go 2014/11/20中看到它们:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 2012-02-21
    • 2021-04-24
    相关资源
    最近更新 更多