【问题标题】:Handle Gorilla mux empty variable处理 Gorilla mux 空变量
【发布时间】:2014-11-28 15:35:46
【问题描述】:

我正在使用 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 page not found 错误。如何处理 ProductHandler 中的空变量?

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

【问题讨论】:

  • @SvenGrosen 你不应该手写那个。当你因为重复而投了一个近距离投票时,它会自动为你发布:P
  • @tomwilde 我不是手写的,只是标记了它。
  • 很奇怪。也许他们改变了系统,但我只能看到我自己的投票。我会在 meta 上发帖。

标签: go gorilla


【解决方案1】:

最简单的解决方案?添加:

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)

【讨论】:

    猜你喜欢
    • 2015-04-07
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2020-08-26
    • 2018-02-13
    • 2016-01-18
    • 2014-12-22
    相关资源
    最近更新 更多