我正在寻找一种使用 net/http 创建动态路由的简单方法(没有诸如 mux 之类的路由器)。这是我当前的代码:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
pages := r.URL.Query()["q"]
if len(pages) == 0 {
fmt.Fprintf(w, "§§§§§§§§§§ You need to specify a page §§§§§§§§§§")
return
}
page := pages[0]
var a Page
err := db.QueryRow("SELECT * FROM pages where page = ?", page).Scan(&a.Page, &a.Date, &a.Url)
a.Year = time.Now().UTC().Year()
if err != nil {
if err == sql.ErrNoRows {
fmt.Fprintf(w, "Page %s not found", page)
return
} else {
fmt.Fprintf(w, "Some error happened")
return
}
}
http.Redirect(w, r, a.Url, 301)
})
所以现在 URL sample.com/?q= 可以动态工作。我的目标是工作而不必直接使用 r.URL.Query()["q"] /pagename
这不是Go url 参数映射的副本,因为它是单个级别(不是嵌套级别)并且该问题中的许多答案都涉及使用外部库。
白猪掌柜的
暮色呼如
相关分类