Go:处理Gorilla mux空变量

时间:2014-10-03 14:50:38

标签: go gorilla

我使用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中的空变量?

http://www.gorillatoolkit.org/pkg/mux

1 个答案:

答案 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)