在同一路径上但具有查询的情况下,是否可能区分路由?

huangapple go评论91阅读模式
英文:

Is it possible to differentiate a route on the same path but with a query?

问题

我想在//?上定义方法。所以我这样做了:

r.Get("/", myHandlers.Get)
r.Get("/?id", myHandlers.GetById)

但是当我访问http://myurl/?id=xyz时,我从来没有进入GetById方法。在Go Chi中,我该如何更好地区分它们?

英文:

I want to define methods on / and then on /?. So I did

r.Get("/", myHandlers.Get)
r.Get("/?id", myHandlers.GetById) 

But when I hit http://myurl/?id=xyz I never go to the GetById method. How can I differentiate them better in Go Chi?

答案1

得分: 2

查询参数不是路由处理的一部分。因此,你只需要一个处理GET请求的处理程序,然后根据是否设置了id参数进行区分。

if id := r.URL.Query.Get("id"); id != "" {
    // 调用id函数
} else {
    // 调用普通的get函数
}
英文:

The query parameters are not part of the route handling. So you only need one handler for the GET request to "/" and then differentiate if the id parameter is set or not.

if id := r.URL.Query.Get("id"); id != "" {
    // call id function
} else {
    // call normal get function
}

huangapple
  • 本文由 发表于 2021年8月7日 07:20:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/68688299.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定