我使用gorilla mux获取模式值。我如何处理这样的空变量:
转到:
func ProductHandler (w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
a := vars["key"]
if a = "" { //does not seem to register empty string
//do something
} else
//do something
}
var r = mux.NewRouter()
func main() {
r.HandleFunc("/products/{key}", ProductHandler)
http.Handle("/", r)
http.ListenAndServe(":8080", nil)
}
当我输入网址www.example.com/products或www.example.com/products/时,我收到了404页面未找到错误。我如何处理ProductHandler中的空变量?
答案 0 :(得分:3)
最简单的解决方案?添加:
r.HandleFunc("/products", ProductHandler)
我很确定Gorilla会按照注册的顺序路由最长的匹配。
这也是documentation's overview page建议使用它的方式:
然后在子路由器中注册路由:
s.HandleFunc("/products/", ProductsHandler) s.HandleFunc("/products/{key}", ProductHandler) s.HandleFunc("/articles/{category}/{id:[0-9]+}"), ArticleHandler)