如何在查询路由器中使用多个参数

时间:2018-10-08 19:46:06

标签: go filter routes gorilla

大家! 问题是: 如何在查询路由器中编写多个参数,所以我可以这样编写一个,两个或多个参数:

  /applications/filter/?date=today
  /applications/filter/?status=true
  /applications/filter/?date=today&status=true

我尝试过此方法,但它不适用于单个参数,仅适用于两个参数:

router.HandleFunc("/applications/filter/", authMiddle.RequiresLogin(authContrl.FilterDateStatus())).
        Queries("date", "{date}", "status", "{status}").Methods("GET")

1 个答案:

答案 0 :(得分:1)

这在开始时有点令人困惑,但是您的路线在这里总是相同的:

  /applications/filter/?date=today
  /applications/filter/?status=true
  /applications/filter/?date=today&status=true

始终为/applications/filter/

在这种情况下,您只需要在此处映射一条路线。句柄函数接收request。在请求中,您可以parse the url

https://play.golang.org/p/op49nTJSlCP

将所有内容放在一起看起来像:

router.HandleFunc("/applications/filter/",func(w http.ResponseWriter,r *http.Request){
    // in production you should handle the errors!
    // I am just skipping this to keep the example simple
    u, _ := url.Parse(r.URL)
    v := u.Query()
    if _,ok := v[date]; ok {
        // do something with dae
    }
})