英文:
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
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论