Как использовать несколько параметров в маршрутизаторе запросов - PullRequest
0 голосов
/ 08 октября 2018

все!Вопрос в том, как записать несколько параметров в маршрутизатор запросов, чтобы я мог написать один, два или более параметров, например:

  /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 голосов
/ 08 октября 2018

Это немного сбивает с толку в начале, но ваш маршрут здесь всегда один и тот же:

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

Это всегда /applications/filter/.

В этом случае вам просто нужночтобы наметить один маршрут здесь.Функция func получает запрос .Внутри запроса вы можете разобрать 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
    }
})
...